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:

Achse Grenzwerte für die scatter-plot - Matplotlib

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:

Achse Grenzwerte für die scatter-plot - Matplotlib

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 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

Schreibe einen Kommentar