【发布时间】:2019-09-21 02:33:31
【问题描述】:
我不确定为什么会发生这种情况。也许这只是一个我看不到的简单错误,但是通过使用此代码:
for filename in glob.glob('/Users/jacob/Desktop/MERS/new/NOT COAL/gensets/statistics_per_lgu/per_lgu_files/*.csv'):
base = os.path.basename(filename)
name = os.path.splitext(base)[0]
df = pd.read_csv(filename)
# Show 4 different binwidths
for i, binwidth in enumerate([10, 20, 30, 40]):
# Set up the plot
ax = plt.subplot(2, 2, i + 1)
plt.subplots_adjust( wspace=0.5, hspace=0.5)
# Draw the plot
ax.hist(df['New Capacity based on 0.8 PF'], bins=binwidth,
color='red', edgecolor='black',alpha=0.5)
# Title and labels
ax.set_title('Histogram with Binwidth = %d' % binwidth, size=10)
ax.set_xlabel('Capacity', size=11)
ax.set_ylabel('Frequency count', size=11)
ax.axvline(x=df['New Capacity based on 0.8 PF'].median(), linestyle='dashed', alpha=0.3, color='blue')
min_ylim, max_ylim = plt.ylim()
ax.text(x=df['New Capacity based on 0.8 PF'].median(),y= max_ylim*0.9, s='Median', alpha=0.7, color='blue',fontsize = 12)
ax.axvline(x=df['New Capacity based on 0.8 PF'].mean(), linestyle='dashed', alpha=0.9, color='green')
min_ylim, max_ylim = plt.ylim()
ax.text(x=df['New Capacity based on 0.8 PF'].mean(),y= max_ylim*0.5, s='Mean', alpha=0.9, color='green',fontsize = 12)
plt.tight_layout()
plt.grid(True)
plt.savefig('/Users/jacob/Documents/Gensets_gis/historgrams/per_lgu_files/{}.png'.format(name))
我在这里获得了像这张附加照片一样创建的所有文件。
关于我做错了什么有什么想法吗?
提前致谢。 attached photo of one histogram output
我想要的结果是这样的。
【问题讨论】:
-
你有错误的缩进,你保存了 4 次同名文件。离开内部
for-loop 后应该保存一次 -
查看代码和图像后,我不明白问题出在哪里。每个图都显示具有不同数量的 bin 以及相同的均值和中值的直方图,因为它们使用来自 DataFrame 的相同数据 - 您甚至可以在循环前计算中值和均值。这个附加的图像有什么问题?你期待什么结果?
-
@furas 这是我的 for 循环应该用不同的直方图保存每个文件的问题;相反,它会将其创建的每个文件的所有直方图放在图中。
-
如果您想将每个直方图保存在不同的文件中,那么您不必为直方图创建子图,但您必须使用不同的文件名。目前,您对所有直方图使用相同的名称。
-
您可以在
for-loop -ax = plt.subplot(1, 1, 1)或ax = plt.subplot()之前创建单个图,并在绘制直方图ax.clear()之前清除它。至于文件,您可以使用i创建唯一名称'{}-{}.png'.format(name, i)
标签: python for-loop matplotlib histogram multipleoutputs