0

我有一个函数,它接受一个参数 p,然后用 plt.plot() 输出一个图形。

但是我想传递一个包含许多 p 值的列表并让它同时绘制所有图(例如,像一个图矩阵,我不知道它实际上叫什么。一种由许多图组成的网格) . 如何才能做到这一点?

例如,这是我当前的功能(简化):

def graph(p):
    x = np.array(get x values from p here) #pseudocode line
    y = np.array(get y values from p here) #pseudocode line

    plt.title("title")
    plt.ylabel("ylabel")
    plt.xlabel("xlabel")
    plt.plot(x, y, 'ro', label = "some label")
    plt.legend(loc='upper left')
    plt.show()
4

2 回答 2

1

如果你知道你想要多少地块,你可以做这样的事情

def graph(p):
    x = np.array(get x values from p here) #pseudocode line
    y = np.array(get y values from p here) #pseudocode line

    plt.title("title")
    plt.ylabel("ylabel")
    plt.xlabel("xlabel")
    plt.plot(x, y, 'ro', label = "some label")
    plt.legend(loc='upper left')

    # Removed the show line from here
    # plt.show()


# Number of subplots. This creates a grid of nx * ny windows
nx = 3
ny = 2

# Iterate over the axes
for y in xrange(nx):
    for x in xrange(ny):
        plt.subplot(nx, ny, y * ny + x + 1)  # Add one for 1-indexing
        graph(p)

# Finally show the window
plt.show()
于 2013-04-04T14:44:59.743 回答
0
def graph(p, ax=None):
    if ax is None:
        ax = plt.gca()
    x = np.linspace(0, np.pi * 2, 1024)
    y = np.sin(x) + p

    ax.set_title("title")
    ax.set_ylabel("ylabel")
    ax.set_xlabel("xlabel")
    ax.plot(x, y, 'ro', label = "some label")
    ax.legend(loc='upper left')

# Number of subplots. This creates a grid of nx * ny windows
nx = 3
ny = 2

fig = plt.gcf()
# Iterate over the axes
for j in xrange(nx * ny):
    t_ax = fig.add_subplot(nx, ny, j + 1)  # Add one for 1-indexing
    graph(j, t_ax)

plt.show()
fig.tight_layout()
plt.draw()

请参阅此处以获取有关指南tight_layout

于 2013-04-04T15:05:20.913 回答