Matplotlib工作流程

时间:2016-11-01 15:07:51

标签: python pandas matplotlib plot

我正在开展一个学校项目,我正在使用matplotlib绘制我的所有情节,但我发现复制第一个情节然后只需更改变量名称以添加其他情节(子图)非常繁琐

你可以在这个链接上看到我是如何做到的:

IPython Project Notebook

非常感谢有关如何改进工作流程的反馈,谢谢。

2 个答案:

答案 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()