2016-06-21 22 views
1

ich eine Funktion erstellt, die eine Handlung schafft, im Grunde sucht die Funktion wie folgt aus:mehrere Plots mit Funktion matplotlib

def draw_line(array): 
    fig, ax = plt.subplots() 
    ax.plot(array) 

Ich wollte wissen, ob es einen Weg gibt, um diese Funktion nennen zu wollen, wenn mehrere Plots zu tun in einer Figur. Insbesondere wollte ich etwas tun wie:

fig, axes = plt.subplots(nrows=2, ncols=3) 
for i in list: 
axes[i] = draw_line(*list[i]) 

Allerdings, was ich bekomme ist ein leeres Gitter mit den tatsächlichen Parzellen unten.

Antwort

2

Sie möchten bei jedem Aufruf von draw_line() kein neues plt- plots() aufrufen. Stattdessen möchten Sie ein vorhandenes Achsenobjekt verwenden. In diesem Fall möchten Sie die Achse für jedes Teilplot mit den entsprechenden Daten übergeben. Dann zeichnen Sie die beiden zusammen.

from matplotlib import pyplot as plt 
import numpy as np 

def draw_line(ax,array): 
    # fig, ax = plt.subplots() 
    ax.plot(array) 

# example data and figure 
example_list = [[1,2,3],[4,5,6],[3,2,5],[3,2,5],[3,2,5],[3,2,5]] 
fig, axes = plt.subplots(nrows=2, ncols=3) 

# loop over elements in subplot and data, plot each one 
for ax,i in zip(axes.flatten(),example_list): 
    draw_line(ax,i) 

Ausgabe sieht wie folgt aus enter image description here

+0

Hinweis, die Bilder in der unteren Reihe sind alle gleiche Ursache ihre Daten sind die sam e. War einfach faul dort. Auch die Funktion draw_line() kann so verrückt sein, wie Sie möchten, geben Sie einfach das einzelne Achsenobjekt ein, in dem die Daten geplottet werden sollen, wie in diesem Beispiel. – benten

+0

Vielen Dank, habe es einfach ausprobiert und es funktioniert gut! – josecoto

2

Alternative zu @ user2241910,

from matplotlib import pyplot as plt 

fig = plt.figure() 
example_list = [[1,2,3],[4,5,6],[3,2,5],[5,2,3],[1,3,1],[5,3,5]] 

for i,data in enumerate(example_list): 
    ax = plt.subplot(2,3,i+1) 
    ax.plot(data) 

Produziert:

enter image description here

Verwandte Themen