Sonntag, Juli 5, 2020

Große Anzahl von Nebenhandlungen mit matplotlib

Ich würde gern Grundstück mit vielen (100) Geschichten mit Python-matplotlib. Ich finde keine passende syntax dafür:

Ich würde gerne so etwas wie (dies funktioniert nicht)

plt.subplot(10,10,i,X1, Y) 

in einer Schleife mit i von 0 bis 99, dann

plt.show()

Syntax ist in vielen tutorials für den Fall, es gibt nur wenige Nebenhandlungen. Dann, die syntax kann

plt.close('all')
fig = plt.figure()

ax1 = plt.subplot(221)
ax2 = plt.subplot(223)
ax3 = plt.subplot(122)

example_plot(ax1)
example_plot(ax2)
example_plot(ax3)

plt.tight_layout()

code ist von hier.

Für mein problem, ich denke mal, dass ich nicht die gleiche syntax verwenden, als hätte ich plt.subplot(10101) usw., was ich nicht verstehe.

Haben Sie eine Lösung?

Dank

InformationsquelleAutor kiriloff | 2012-11-13

4 Kommentare

  1. 14

    Versuchen Sie dies:

    fig, ax = plt.subplots(10, 10)

    wo ax enthält einen hundert-Achse in eine Liste (von Listen).

    Es ist eine wirklich praktische Funktion, aus die docs:

    Definition: plt.subplots(nrows=1, ncols=1, sharex=False, sharey=False, squeeze=True, subplot_kw=None, **fig_kw)
    Create a figure with a set of subplots already made.
    
    This utility wrapper makes it convenient to create common layouts of
    subplots, including the enclosing figure object, in a single call.
  2. 6

    Dein Beispiel ist fast richtig. Bitte verwenden Sie:

    for i in range(100):
        ax = plt.subplot(10,10,i)
        ax.plot(...)
  3. 6

    Hier eine voll funktionsfähige code-Lösung, die zeigt, wie die Dinge sind nummeriert, da es aussieht wie die Leute kommen immer noch hier zu sehen:

    columns = 10
    rows = 4
    fig, ax_array = plt.subplots(rows, columns,squeeze=False)
    for i,ax_row in enumerate(ax_array):
        for j,axes in enumerate(ax_row):
            axes.set_title('{},{}'.format(i,j))
            axes.set_yticklabels([])
            axes.set_xticklabels([])
    #         axes.plot(you_data_goes_here,'r-')
    plt.show()

    Welche Ausgaben dies, um zu zeigen, wie die Nummerierung funktioniert (ich habe nur 4 Zeilen-statt 10, um das Bild ein bisschen kleiner, ändern Sie einfach „Zeilen“, um 10, um 10 Zeilen des subplots):

    Große Anzahl von Nebenhandlungen mit matplotlib

    Die Nummerierung zeigt Ihnen, welche i-und j-Werte, die Sie haben auf jeder position, so können Sie Online die Dinge so, wie Sie wollen in das array von matplotlib Nebenhandlungen. Dies beinhaltet subplotting in arrays für welches layout man möchte.

    • Ich weiß, das ist uralt, aber wenn Sie Zeilen oder Spalten 1, der code schlägt fehl, da gibt es nichts zu Durchlaufen.
    • Fair genug, obwohl der springende Punkt ist, zeigt eine grosse Auswahl. Hoffentlich werden die Leute sehen können, wie zur Beseitigung der unnötigen Schleife, wenn Sie wollen, wollen Sie ein Beispiel dafür?
    • Vielleicht Bearbeiten Sie Ihre Antwort an gehören die squeeze=’False‘ option in plt.Nebenhandlungen machen die Antwort Griff die Spalten/Zeile=1 Fall.
    • Hinzugefügt. Ich hatte nie die Gelegenheit zu benutzen, danke für den Hinweis mich an Sie. ordentlich!
    • Hier finden Sie mit einem colorscale für alle Nebenhandlungen: stackoverflow.com/questions/13784201/…
  4. 3

    Wenn Sie versuchen, generieren ~100 Nebenhandlungen, wie eine praktische Sache, die Sie vielleicht etwas tun wollen wie diese, die viel schneller laufen. Sie geben bis haben einzelnen Achsen Beschriftungen, aber mit 100 Nebenhandlungen, es sei denn, Sie machen riesige print-outs, die Sie nicht in der Lage zu Lesen Sie die Etiketten sowieso.

Kostenlose Online-Tests