2016-07-15 24 views
-1

我有一个列表int arr=[1,2,3,4]和字符串列表list(df)(它返回数据框的列标题列表)。我想绘制一个条形图,以便从字符串列表中获取x轴标签,并从中输入它们的值。如何从matplotlib/seaborn绘制一个条形图,其中int列表为值,字符串列表为x轴?

因此,例如,如果list(df)返回[a,b,c,d],则会出现一个图形,x轴上的a,b,c,d标记对应的值为1,2 ,分别在y轴上3,4。

我想不出一种方法来做到这一点。请帮忙。

回答

0

这似乎不是一个直观的事情要做。我跟着例子here创建此代码:

import matplotlib.pyplot as plt 
vals=[1,2,3,4,5] 
inds=range(len(vals)) 
labels=["A","B","C","D","E"] 

fig,ax = plt.subplots() 
rects = ax.bar(inds, vals) 
ax.set_xticks([ind+0.5 for ind in inds]) 
ax.set_xticklabels(labels) 

,并得到如下的输出:

enter image description here

在代码中我只是设置变量的前半部分。 在下半部分中,我调用plt.subplots(),以便我可以获取轴(ax)句柄以将tickmarks和rects放在一起。设置标记将决定标签的位置,所以我将它们向右移动0.5,否则它们将位于每个框的最左边。

+0

@riberman谢谢一个男人!只是另一个查询。 xticklabels(如A,B,C ...在这里)是长列名,它们彼此重叠。有没有办法以可读的方式打印它们? –

+0

'locs,labels = plt.xticks(); plt.setp(labels,rotation = 45)' – Serenity

+0

谁能告诉我为什么@ rbierman的解决方案对我的情况不起作用?我有以下两个列表:'weekday_with_hosts:[u'Tue',u'Thu',u'Sat',u'Sun',u'Fri',u'Mon',u'Wed'] hosts: 277840,363436,184380,182590,263086,301684,318698]',我得到错误:'无法将字符串转换为浮点数:Tue' – mdivk

相关问题