2016-06-22 5 views
0

Ich benutze ein Jupyter-Notebook und ich möchte ein Raster von Unterplots, die 6 Parzellen hoch ist durch 4 Parzellen tief.Matplotlib Subplots nicht glücklich Auspacken

Bevor irgendwelche Daten hinzufügen oder Manipulation der Grundstücke an alles, was ich habe versucht, nur die folgende Zeile in Isolation auszuführen:

f, (ax1, ax2) = plt.subplots(6, 4, sharex=True, figsize=(13, 7)) 

Es gibt diese Ausnahme:

--------------------------------------------------------------------------- ValueError        Traceback (most recent call last) <ipython-input-66-4b47dbb065be> in <module>() 
    12 # fig, ax = plt.subplots(1, 1, figsize=(13, 7)) 
    13 
---> 14 f, (ax1, ax2) = plt.subplots(6, 4, sharex=True, figsize=(13, 7)) 
    15 # ax1.plot(x, y) 
    16 # ax1.set_title('Sharing Y axis') 

ValueError: too many values to unpack 

Antwort

1

Sie versuchen, ein Raster von 6x4 (= 24) Nebenhandlungen zu erstellen, aber Sie haben nur zwei Handlungsstränge genannt zu fangen, was von plt.subplots zurückgeführt wird, so dass er versucht, 24 Nebenhandlungen in zwei Variablen zu entpacken (ax1 und ax2) .

Sie haben ein paar Optionen:

  1. fangen alle subplot Instanzen in einem Container, und dann Index, der einzelne Nebenhandlungen zuzugreifen:

    f, axes = plt.subplots(6, 4, sharex=True, figsize=(13, 7)) 
    axes[0,0].plot(x,y) # plot on top left subplot 
    axes[2,1].plot(x,y) # plot on subplot in column 3, row 2 
    
  2. fangen alle Handlungsstränge einzeln:

    fig, (
         (ax11, ax21, ax31, ax41), 
         (ax12, ax22, ax32, ax42), 
         (ax13, ax23, ax33, ax43), 
         (ax14, ax24, ax34, ax44), 
         (ax15, ax25, ax35, ax45), 
         (ax16, ax26, ax36, ax46) 
        ) = plt.subplots(6, 4, sharex=True, figsize=(13, 7)) 
    ax11.plot(x,y) # plot on two left axes 
    ax32.plot(x,y) # plot on subplot in column 3, row 2 
    
1

Wenn ich don‘ t sag fehler, du musst so etwas schreiben:

f, (ax1, ax2, ax3, ax4, ax5, ax6, ax7, ax8, ax9, ax10) = plt.subplots(6, 4, sharex=True, figsize=(13, 7)) 

Weil du 6 hohe Plots und 4 tief hattest Grundstücke.

Ich bin nicht wirklich sicher, aber es wird interessant sein, diese Art von Lösung zu versuchen.

Verwandte Themen