我想使用matplotlib在一个页面中保存6个图表。这些图表都是函数的调用,并在保存之前提出以下代码进行测试:
def save_plot (output_DF, path = None):
fig = plt.figure(1)
sub1 = fig.add_subplot(321)
plt.plot(plot_BA(output_DF))
sub2 = fig.add_subplot(322)
sub2.plot(plot_merchantableVol(output_DF))
sub3 = fig.add_subplot(323)
sub3.plot(plot_topHeight(output_DF))
sub4 = fig.add_subplot(324)
sub4.plot(plot_GrTotVol(output_DF))
sub5 = fig.add_subplot(325)
sub5.plot(plot_SC(output_DF))
sub6 = fig.add_subplot(326)
sub6.plot(plot_N(output_DF))
plt.show()
就这样,我创建了一个包含6个空图的页面,但是为我调用的每个函数创建了6个单独的图。例如,plot_BA(output_DF)是一个函数,我调用它来读取csv文件并创建一个图(单独它正在工作)。另一个是类似的功能,也在工作。似乎我错过了将图形放在图形指定位置的东西。
这是我正在使用的功能之一。
def plot_BA(output_DF):
BA = output_DF.loc[:,['BA_Aw','BA_Sw', 'BA_Sb','BA_Pl']]
BAPlot = BA.plot()
plt.xlabel('Year', fontsize=14)
plt.ylabel('BA (m2)')
return True
任何提示?
答案 0 :(得分:0)
尝试这样的事情:
import matplotlib.pyplot as plt
import random
def function_to_call(func_name, ax):
data = range(10)
random_x_label = random.choice('abcdefghijk')
random_y_label = random.choice('abcdefghijk')
random.shuffle(data) # demonstration
ax.plot(data)
ax.set_xlabel(random_x_label)
ax.set_ylabel(random_y_label)
ax.set_title(func_name)
fig = plt.figure(1)
sub1 = fig.add_subplot(321)
function_to_call('call_0', sub1)
sub2 = fig.add_subplot(322)
function_to_call('call_1', sub2)
sub3 = fig.add_subplot(323)
function_to_call('call_2', sub3)
sub4 = fig.add_subplot(324)
function_to_call('call_3', sub4)
sub5 = fig.add_subplot(325)
function_to_call('call_4', sub5)
sub6 = fig.add_subplot(326)
function_to_call('call_5', sub6)
plt.tight_layout() # just to improve spacings
plt.show()
fig.savefig('output_plot.png')
我们的想法是将你的轴 - 对象(这是整个图中的许多内容之一)转发给你的函数。那么你需要轴级功能。请注意plt.xlabel
(数字级)和ax.set_xlabel
(轴级)之间的差异。