Achse Grenzwerte für die scatter-plot - Matplotlib
Ich bin mit dem gleichen problem, das sich stellte hier, jedoch die vorgeschlagene Lösung funktionierte nicht für mich.
Ich bin Plotten ein Satz von Daten, die die Haupthandlung dieses Muster haben:
Ist eines Plots, der Achsen-Grenzen variiert von (-1, 1) in x und y, mit einer Marge setzt mit diesem Stück code:
plt.figure()
plt.show(data)
## Add some margin
l, r, b, t = plt.axis()
dx, dy = r-l, t-b
plt.axis([l-0.1*dx, r+0.1*dx, b-0.1*dy, t+0.1*dy])
Das problem ist, denn ich habe mehr "komplexe" Handlung, in der einige änderungen hatte mir gemacht. Dies ist der code, den es produziert:
def plot_quiver_singularities(min_points, max_points, vector_field_x, vector_field_y, file_path):
"""
Plot the singularities of vector field
:param file_path : the path to save the data
:param vector_field_x : the vector field x component to be plot
:param vector_field_y : the vector field y component to be plot
:param min_points : a set (x, y) of min points field
:param max_points : a set (x, y) of max points field
"""
fig = plt.figure(figsize=(8, 8))
ax = fig.add_axes([.13, .3, .6, .6])
## Plot quiver
x, y = numpy.mgrid[-1:1:100*1j, -1:1:100*1j]
m = numpy.sqrt(numpy.power(vector_field_x, 2) + numpy.power(vector_field_y, 2))
quiver = ax.quiver(x, y, vector_field_x, vector_field_y, m, zorder=1)
## Plot critical points
x = numpy.linspace(-1, 1, x_steps)
y = numpy.linspace(-1, 1, y_steps)
# Draw the min points
x_indices = numpy.nonzero(min_points)[0]
y_indices = numpy.nonzero(min_points)[1]
ax.scatter(x[x_indices], y[y_indices], marker='$\\circlearrowright$', s=100, zorder=2)
# Draw the max points
x_indices = numpy.nonzero(max_points)[0]
y_indices = numpy.nonzero(max_points)[1]
ax.scatter(x[x_indices], y[y_indices], marker='$\\circlearrowleft$', s=100, zorder=2)
## Put legends
marker_min = plt.Line2D((0, 0), (0, 0), markeredgecolor=(1.0, 0.4, 0.0), linestyle='',
marker='$\\circlearrowright$', markeredgewidth=1, markersize=10)
marker_max = plt.Line2D((0, 0), (0, 0), markeredgecolor=(0.2, 0.2, 1.0), linestyle='',
marker='$\\circlearrowleft$', markeredgewidth=1, markersize=10)
plt.legend([marker_min, marker_max], ['CW rot. center', 'CCW rot. center'], numpoints=1,
loc='center left', bbox_to_anchor=(1, 0.5))
quiver_cax = fig.add_axes([.13, .2, .6, .03])
fig.colorbar(quiver, orientation='horizontal', cax=quiver_cax)
## Set axis limits
plt.xlim(-1, 1)
plt.ylim(-1, 1)
## Add some margin
# l, r, b, t = plt.axis()
# dx, dy = r-l, t-b
# plt.axis([l-0.1*dx, r+0.1*dx, b-0.1*dy, t+0.1*dy])
plt.savefig(file_path + '.png', dpi=dpi)
plt.close()
Daraus ergibt sich das folgende Bild:
Wie gesehen werden kann, die Achse Grenzen nicht halten und ich habe nicht gefunden warum noch.
Jede mögliche Hilfe würde geschätzt.
Vielen Dank im Voraus.
Ein wenig unsicher, hier spielt die Reihenfolge eine Rolle spielen? Sie haben die color-bar nach der letzten Achse Befehl. Pflege, um zu versuchen, es zu entfernen?
Ja, ich habe versucht, das zu tun. Das Ergebnis ist das gleiche. Das problem tritt auf, wenn ich die scatter-Funktion.
schalten Sie autoskalierender oder einfach nur re-legen Sie die Grenzen für das, was Sie wollen, nach Aufruf streuen.
Hi, @tcaswell. Re-seting der Grenzen ist nicht das, was ich mache mit: plt.xlim(-1, 1), plt.ylim(-1, 1)? Danke.
Ich wollte eigentlich nicht Lesen Ihren code (weil es zu viel davon, das ist nicht relevant für deine Frage). Verwenden Sie nicht
Ja, ich habe versucht, das zu tun. Das Ergebnis ist das gleiche. Das problem tritt auf, wenn ich die scatter-Funktion.
schalten Sie autoskalierender oder einfach nur re-legen Sie die Grenzen für das, was Sie wollen, nach Aufruf streuen.
Hi, @tcaswell. Re-seting der Grenzen ist nicht das, was ich mache mit: plt.xlim(-1, 1), plt.ylim(-1, 1)? Danke.
Ich wollte eigentlich nicht Lesen Ihren code (weil es zu viel davon, das ist nicht relevant für deine Frage). Verwenden Sie nicht
plt
Funktionen, da es einfach für das, was Sie denke, die aktuellen Achsen ist und was pyplot
denkt, den aktuellen Achsen ist nicht mehr synchron. Versuchen Sie es mit ax.set_xlim
und ax.set_ylim
.
InformationsquelleAutor pceccon | 2014-07-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
War ich in der Lage das problem zu lösen indem wir dieses Stück code
Direkt nach dem Aufruf
scatter()
.InformationsquelleAutor pceccon
Sie können auch festlegen, dass diejenigen, die
ax
Objekt:InformationsquelleAutor Lucas Aimaretto