Python 尝试使用annotate()方法时Matplotlib显示错误?
我正在尝试使用matplotlib.plt通过post vbyp列表打印视图 并使用名称列表在每个点添加文本。但是,注释函数始终显示错误:Python 尝试使用annotate()方法时Matplotlib显示错误?,python,matplotlib,plot,Python,Matplotlib,Plot,我正在尝试使用matplotlib.plt通过post vbyp列表打印视图 并使用名称列表在每个点添加文本。但是,注释函数始终显示错误: x, y = xytext TypeError: 'float' object is not iterable 为了纠正它,我使用了范围方法,但它没有纠正它 import matplotlib.pyplot as plt names = ['S','Deuk','Cip','Pubt','Adoct','Vsa','Rener', 'Gols','OYO
x, y = xytext
TypeError: 'float' object is not iterable
为了纠正它,我使用了范围方法,但它没有纠正它
import matplotlib.pyplot as plt
names = ['S','Deuk','Cip','Pubt','Adoct','Vsa','Rener',
'Gols','OYO','Qum','Sre','Mey','Micft',
'Nia','Tco','Texments','Fidty','Jrgan','Adoch','MyKa','Dw','Ba','HL','Nx','Towerch','Uer']
posts = [6,3,4,4,6,3,3,8,7,2,15,4,5,5,2,2,2,5,3,2,2,3,4,1,1,1]
views =[554,1272,257,197,545,170,162,18465,419,107,931,1140,438,15626,72,104,219,336,217,1527,278,122,252,56,62,62]
vbyp = []
for i in range(len(posts)):
vbyp.append(views[i]/posts[i])
plt.plot(vbyp)
for i in range(len(vbyp)):
plt.annotate(names[i],vbyp[i])
plt.show()
如果没有注释,我会得到如下图像:
但是我想要这样的东西:有两种可能将您的名字与相应的值关联起来。你必须自己选择你最喜欢的 第一:正确使用你的方法,这会产生不太好的效果。在annotate中,您必须指定字符串名[i]和x,y坐标,到目前为止,您只提供了一个数字
fig = plt.figure(figsize=(9,5))
# Your code here
for i in range(len(vbyp)):
plt.annotate(names[i],(i, vbyp[i]))
输出
第二:使用名称作为x-tick标签,可以生成更好、可读性更好的绘图
plt.xticks(range(25), names, rotation=45)
输出
您需要正确使用注释。例如,要在平面上定位图元,需要两个坐标,通常称为x和y。您需要将这两个坐标作为元组或列表提供给注释的xy参数。这里您只提供一个号码。另外,您能告诉我们您想把名字放在哪里吗?是否希望它们作为x轴上的x记号标签?我想你想要的是plt。谢谢你的帮助:@KartikeySingh:很高兴能帮忙。不客气