将fig对象列表添加到python matplotlib中的子图

时间:2017-06-19 14:36:27

标签: python matplotlib

我想创建一个通用的绘图工具,例如: 从主函数我调用一个绘制单个函数的函数(错误图) 在这里,我想使用此函数生成不同的图,并将它们组合成一个子图。例如:

从主函数

我会用不同的数据调用绘图函数3次:

`my_figs=list()
my_figs.append(error_plot("Fig_1", [1,2,3], [[1,1,1],[2,2,2],[3,3,3]]))
my_figs.append(error_plot("Fig_2", [a,b,c], [[1,1,1],[2,2,2],[3,3,3]]))
my_figs.append(error_plot("Fig_3", [2a,2b,3c], [[1,1,1],[2,2,2],[3,3,3]]))

绘图仪功能如下:

def error_plot(title, x_data, y_data, x_name, y_name):

xtick_size = list()
for i in range(0, len(x_data)):
    xtick_size.append(i)

mean_y_data = list()
var_y_data = list()

for i in range(len(y_data)):
    mean_y_data.append(np.nanmean(y_data[i]))
    var_y_data.append(np.nanvar(y_data[i]))

plt.figure()
ax = plt.subplot(111)
ax.errorbar(xtick_size, mean_y_data)
ax.plot(xtick_size, mean_y_data)
plt.xticks(xtick_size, x_data)
ax.set_xlabel(x_name)
ax.set_ylabel(y_name)
ax.set_title(title)
ax.set_xticklabels(ax.xaxis.get_majorticklabels(), rotation=45)
ax.grid()

return plt

我的问题是我不知道如何从这个列表中制作一个子图,是否有任何聪明的方法可以做到这一点?目前我尝试的是(不工作):

def create_sub_plot(title, plots):

plot_rows = len(plots)
i = 1
for fig in plots:
    ax = plt.subplot(plot_rows, 1, i)

    i+=1
plt.show()

1 个答案:

答案 0 :(得分:0)

matplotlib的工作方式是你有一个数字。在这个图中你可以有任意数量的子图。

因此,您需要设计代码,使绘图功能将轴作为参数,并通过调整标签,刻度和绘图来操纵此轴。

1