我想创建一个通用的绘图工具,例如: 从主函数我调用一个绘制单个函数的函数(错误图) 在这里,我想使用此函数生成不同的图,并将它们组合成一个子图。例如:
从主函数我会用不同的数据调用绘图函数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()
答案 0 :(得分:0)
matplotlib的工作方式是你有一个数字。在这个图中你可以有任意数量的子图。
因此,您需要设计代码,使绘图功能将轴作为参数,并通过调整标签,刻度和绘图来操纵此轴。
1