【发布时间】:2019-01-23 12:30:09
【问题描述】:
我有一个 Pandas 数据框,其中包含一个包含“年份”数据的列和一个包含“计数”数据的列。还有一个包含“类别”变量的列。并非每个类别都有每年的数据。我想使用一个共同的 x 轴(年份)绘制一组条形图,一个在另一个之上。我编写的代码几乎可以工作,只是 x 轴并非对所有绘图都通用。
代码示例如下。基本上,代码使用 sharex=True 创建一个轴数组,然后逐步遍历每个轴,绘制数据框中的相关数据。
# Define dataframe
myDF = pd.DataFrame({'year':list(range(2000,2010))+list(range(2001,2008))+list(range(2005,2010)),
'category':['A']*10 + ['B']*7 + ['C']*5,
'count':[2,3,4,3,4,5,4,3,4,5,2,3,4,5,4,5,6,9,8,7,8,6]})
# Plot counts for individual categories in array of bar charts
fig, axarr = plt.subplots(3, figsize = (4,6), sharex = True)
for i in range(0,len(myDF['category'].unique())):
myDF.loc[myDF['category'] == myDF['category'].unique()[i],['year','count']].plot(kind = 'bar',
ax = axarr[i],
x = 'year',
y = 'count',
legend = False,
title = 'Category {0} bar chart'.format(myDF['category'].unique()[i]))
fig.subplots_adjust(hspace=0.5)
plt.show()
结果截图如下:
我预计 A 类酒吧从 2000 年延伸到 2009 年,B 类酒吧从 2001 年延伸到 2007 年,C 类酒吧从 2005 年延伸到 2009 年。但是,似乎每个类别的前 5 个酒吧无论 x 轴上的值如何,都会绘制。据推测,之所以只绘制 5 个条形图,是因为最后一个类别只有 5 年的数据。一个更大的问题是,为其他类别绘制的数据没有针对正确的年份绘制。我已经搜索了解决方案并尝试了各种修改,但似乎没有任何效果。
非常欢迎任何解决此问题的建议。
【问题讨论】:
标签: python pandas plot bar-chart