Python:在matplotlib.pyplot上打印子列表

Python:在matplotlib.pyplot上打印子列表,python,list,python-3.5,sublist,plt,Python,List,Python 3.5,Sublist,Plt,我想绘制一个包含子列表的列表,每个子列表包含名称和分数。 子列表item one=nameasX-label,以及item two=scoreasY-label datacount = (("mike", 9), ("john", 8), ("smith", 7), ("niki", 7), ("garlick", 7), ("don", 7), ("ross", 7), ("darli", 6), ("nick", 6), ("perl", 6),

我想绘制一个包含子列表的列表,每个子列表包含名称和分数。 子列表
item one=name
as
X-label
,以及
item two=score
as
Y-label

datacount = (("mike", 9), ("john", 8), ("smith", 7), ("niki", 7), ("garlick", 7),
             ("don", 7), ("ross", 7), ("darli", 6), ("nick", 6), ("perl", 6), 
             ("cat", 5), ("dona", 4))
如何在plt中绘制此图

我像字典一样试过这个,但它没有显示所有的名字和相应的分数

import matplotlib.pyplot as plt
datacount = D

plt.bar(range(len(D)), D.values(), align='center')
plt.xticks(range(len(D)), D.keys())

plt.show()

假设您有一个元组列表,您可以使用
zip
解压X和Y元素,然后进行条形图;
勾号标签
可用于标记x轴:

import matplotlib.pyplot as plt 
%matplotlib inline

plt.figure(figsize = (10, 7))

X, Y = zip(*datacount)
ax = plt.bar(range(len(X)), Y, 0.6, align='center', tick_label = X, color="sienna") 

谢谢,它是有效的,我如何删除一些等于[('',3467),('\n',31)的X?Y=3467完全破坏了图形。我不能使用.remove()方法,对吗?你可以使用列表理解过滤你的
datacount
数据计数。
datacount=[X代表datacount中的X,如果X[0]不在['',\n']]
如果名称太长,且水平名称相互交叉,如何增加水平比例,使名称不会相互交叉?可以使用
ax=plt.xticks(旋转=70)旋转x轴标签
用您认为合适的任何角度替换
70
。谢谢,旋转很好!而且列表理解非常方便,我可以设置最小/最大Y值。为什么plt.savefig(“ABC.pdf”)不起作用?