如何在Python中将绘图分配给变量并在多绘图中使用该变量



我想要一个创建绘图的函数。一旦我有了这个情节,我想在多画面中使用它。

例如,我可以创建以下函数:

def fig_1(x):
# create a new figure
fig = plt.figure()
plt.plot([1*x, 2*x, 3*x, 4*x])
return fig

之后我想要一些类似的东西:

subplot(3,2,1) = fig_1(1)
subplot(3,2,2) = fig_1(2)
subplot(3,2,3) = fig_1(3)
subplot(3,2,4) = fig_1(4)
subplot(3,2,5) = fig_1(5)
subplot(3,2,6) = fig_1(6)

为了绘制最终绘图:

from pylab import *
pdf = matplotlib.backends.backend_pdf.PdfPages("Cal8010.pdf")
for fig in xrange(1,figure().number): 

这样,它就不起作用了。我能做我想做的事吗?

感谢的任何帮助

首先:我创建子图,每个子图中都有一个图:

import matplotlib.pyplot as plt
import numpy as np

def fig_1(ax, x, y):
ax.plot(x, y)

fig, ax = plt.subplots(3, 2)
for i in range(3):
for j in range(2):
x = np.random.random(10)
y = np.random.random(10)
fig_1(ax[i, j], x, y)
ax[i, j].set_title(f"Subplot #{2*i + j + 1}")
plt.show()

现在,您还可以绘制一个空数组,并将数据进一步更新到此图:

import matplotlib.pyplot as plt
import numpy as np

def fig_1(ax):
line, = ax.plot([], [])
return line

fig, ax = plt.subplots(3, 2)
lines = []
for i in range(3):
for j in range(2):
x = np.random.random(10)
y = np.random.random(10)
lines.append((fig_1(ax[i, j]), x, y))
ax[i, j].set_title(f"Subplot #{2*i + j + 1}")        
for p in lines:
l, x, y = p
l.set_xdata(x)
l.set_ydata(y)

fig.canvas.draw()
fig.canvas.flush_events()
plt.show()

但这可能很棘手,因为每个图上的两个轴都不适合数据,所以图可能会越界(所以你可能需要将x和y限制固定为数据的最小值和最大值(

尊敬的审核人,

这里的解决方案,我已经制定感谢另一个帖子,我希望再次找到,以给予正确的信用。

fig, axs = plt.subplots(2,2)
def plot_ff(ax=None,data):
ax.plot(data)
return
plot_ff(axs[0, 0],data_1)
plot_ff(axs[0, 1],data_2)
plot_ff(axs[1, 0],data_3)
plot_ff(axs[0, 1],data_3)

通过这种方式,它可以工作,并且可以轻松地使用不同类型的多批次进行管理

你觉得这个解决方案怎么样?我应该删掉这些问题吗?Diego

最新更新