web-dev-qa-db-de.com

Wie man xlim und ylim für einen Subplot in matplotlib einstellt

Ich möchte die X- und Y-Achse in Matplotlib beschränken, aber für eine bestimmte Nebenhandlung. Wie ich sehen kann, hat die Nebenzeichnung selbst keine Achseneigenschaft. Ich möchte zum Beispiel nur die Grenzen für die zweite Handlung ändern!

import matplotlib.pyplot as plt
fig=plt.subplot(131)
plt.scatter([1,2],[3,4])
fig=plt.subplot(132)
plt.scatter([10,20],[30,40])
fig=plt.subplot(133)
plt.scatter([15,23],[35,43])
plt.show()
144
Cupitor

Sie sollten ein wenig über die OO Schnittstelle zu matplotlib lernen, nicht nur über die State-Machine-Schnittstelle. Fast alle Funktionen von plt.* Sind Thin Wrapper, die im Grunde genommen gca().*.

plt.subplot gibt ein axes Objekt zurück. Sobald Sie einen Verweis auf das Achsenobjekt haben, können Sie direkt darauf zeichnen, seine Grenzen ändern usw.

import matplotlib.pyplot as plt

ax1 = plt.subplot(131)
ax1.scatter([1, 2], [3, 4])
ax1.set_xlim([0, 5])
ax1.set_ylim([0, 5])


ax2 = plt.subplot(132)
ax2.scatter([1, 2],[3, 4])
ax2.set_xlim([0, 5])
ax2.set_ylim([0, 5])

und so weiter für so viele Achsen, wie Sie möchten.

oder besser, wickeln Sie alles in eine Schleife:

import matplotlib.pyplot as plt

DATA_x = ([1, 2],
          [2, 3],
          [3, 4])

DATA_y = DATA_x[::-1]

XLIMS = [[0, 10]] * 3
YLIMS = [[0, 10]] * 3

for j, (x, y, xlim, ylim) in enumerate(Zip(DATA_x, DATA_y, XLIMS, YLIMS)):
    ax = plt.subplot(1, 3, j + 1)
    ax.scatter(x, y)
    ax.set_xlim(xlim)
    ax.set_ylim(ylim)
204
tacaswell