我在Google上搜索了很多东西,在这里也阅读了很多文章,但是我仍然不知道如何根据以下数据创建合适的条形图。
这只是一个例子:
df5 = pd.DataFrame((['tag1',2019,320],['tag2',2019,320],['tag1',2018,53],['tag3',2018,123],['tag2',2017,76],['tag3',2017,324]), columns=['tags', 'year', 'hits'])
In [41]: df5
Out[41]:
tags year hits
0 tag1 2019 320
1 tag2 2019 320
2 tag1 2018 53
3 tag3 2018 123
4 tag2 2017 76
5 tag3 2017 324
因此,每年都有标签以及使用了该标签的次数。
我想做类似的事情:
plt.figure(figsize=(15, 5))
sns.barplot(hue=df5['tags'].values,x=df5.year.values, y=df5['hits'].values,dodge=True,orient='v',palette=("Set1"))
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
plt.xlabel('Years')
plt.ylabel('Total Articles')
plt.xticks(rotation='vertical')
plt.subplots_adjust(bottom=0.4,right=0.8)
plt.show()
即使只有3年的数据并且只有3个标签,该图也不是最好的,但是如果我使用20年的数据:
我知道这是因为hue
导致条形变得非常狭窄,基本上这个数字无法使用。
即使我使用dodge=False
也不起作用,因为可能有具有相同点击次数的标签,例如:
所以我的问题是什么是最好的解决方案/方法?目前,我尝试使用seaborn
,但也许还有一个我不知道的更好的选项/解决方案。
如果您有想法,请告诉我。 我在想也许两个x轴分别是一年和一个用于标签。...
谢谢