Python 具有函数matplotlib的多个绘图

Python 具有函数matplotlib的多个绘图,python,matplotlib,plot,Python,Matplotlib,Plot,我创建了一个创建绘图的函数,基本上函数如下所示: def draw_line(array): fig, ax = plt.subplots() ax.plot(array) 我想知道在一个图形中进行多个绘图时,是否有方法调用此函数。特别是,我想执行以下操作: fig, axes = plt.subplots(nrows=2, ncols=3) for i in list: axes[i] = draw_line(*list[i]) 然而,我得到的是一个空网格,上面有下面的实

我创建了一个创建绘图的函数,基本上函数如下所示:

def draw_line(array):
    fig, ax = plt.subplots()
    ax.plot(array)
我想知道在一个图形中进行多个绘图时,是否有方法调用此函数。特别是,我想执行以下操作:

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

然而,我得到的是一个空网格,上面有下面的实际绘图。

您不希望每次调用draw\u line时都调用一个新的plt.subplot。相反,您希望使用现有的轴对象。在这种情况下,您希望为每个子批次传递轴及其相应的数据。然后将两者一起绘制

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) 
输出如下所示
您不希望每次调用draw\u line时调用新的plt.subplot。相反,您希望使用现有的轴对象。在这种情况下,您希望为每个子批次传递轴及其相应的数据。然后将两者一起绘制

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) 
输出如下所示

替代@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)
产生:


@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)
产生:


注意,最下面一行的图片都是相同的,因为它们的数据是相同的。我只是在那里偷懒。此外,函数draw_line可以是任意疯狂的,只需像本例中那样传入要绘制数据的单个轴对象。非常感谢,刚刚尝试过,效果很好!注意,最下面一行的图片都是相同的,因为它们的数据是相同的。我只是在那里偷懒。此外,函数draw_line可以是任意疯狂的,只需像本例中那样传入要绘制数据的单个轴对象。非常感谢,刚刚尝试过,效果很好!