我正在开展一个学校项目,我正在使用matplotlib绘制我的所有情节,但我发现复制第一个情节然后只需更改变量名称以添加其他情节(子图)非常繁琐
你可以在这个链接上看到我是如何做到的:
非常感谢有关如何改进工作流程的反馈,谢谢。
答案 0 :(得分:3)
考虑将绘图制作机制分离到它们自己的函数中,这样就可以创建一个for
循环来为每个变量调用该函数。这是一个示例(我只复制了两个参数列表,但您可以看到如何添加其余参数列表。)
fig, ax = plt.subplots(nrows=3, ncols= 2, figsize=(10,10))
x = np.linspace(0,1000000,num=10000)
def plot_maker(ax, x, var, var_name, ax_x, ax_y):
sh, l, sc = sts.weibull_min.fit(var, floc=0)
y = sts.weibull_min.pdf(x, sh, l, sc)
print('Weibull parameters for {0}:\n Scale: {1:2.2f}\n Shape: {2:02.2f}'.format(var_name, sc, sh))
ax[ax_x, ax_y].hist(var, normed=True)
ax[ax_x, ax_y].plot(x, y, 'r', lw=2)
params = [
[fuel['TTF or TBF'], 'Fuel TBF', 0, 0],
[engine['TBF(TTF)'], 'Engine TBF', 0, 1],
]
for param_list in params:
var, var_name, ax_x, ax_y = param_list
plot_maker(ax, x, var, var_name, ax_x, ax_y)
有很多方法可以写这个,但重要的是你将建模和绘图制作与各个参数分开,这样你就可以根据需要添加任意参数。
答案 1 :(得分:1)
如果您执行此类操作,则可以调用绘图功能&只需发送您想要绘制的轴(使用.reshpae(-1)允许您展平轴)和要绘制的变量列表。您还可以发送其他参数列表,如颜色或字幕。
def Plotter(axes,Yvars,Colors,x):
for ax, yvar, c in zip(axes,Yvars,Colors):
ax.plot(x,yvar,color = c)
fig, axes = plt.subplots(nrows=3, ncols= 2, figsize=(10,10))
Yvars = [y1,y2,y3,y4,y5]
Colors = ['b','b','g','g','r']
ax_to_plot = axes.reshape(-1)[0:5]
Plotter(ax_to_plot,Yvars,Colors,x)
plt.tight_layout()