Python 如何基于列注释散点图中的点?

Python 如何基于列注释散点图中的点?,python,pandas,matplotlib,scatter-plot,Python,Pandas,Matplotlib,Scatter Plot,想要'Age'作为x轴,'Pos'作为y轴,标签作为'Player'名称。但由于某些原因,无法标记点 代码: 将numpy导入为np 将matplotlib.pyplot作为plt导入 作为pd进口熊猫 将文本导入到 data=pd.read\u excel(“文件路径”) 图,ax=plt.子批次() 图设置尺寸英寸(7,3) df=pd.DataFrame(数据,列=['Player','Pos','Age']) df.plot.scatter(x='Age', y='Pos', c='Da

想要
'Age'
作为x轴,
'Pos'
作为y轴,标签作为
'Player'
名称。但由于某些原因,无法标记点

代码:

将numpy导入为np
将matplotlib.pyplot作为plt导入
作为pd进口熊猫
将文本导入到
data=pd.read\u excel(“文件路径”)
图,ax=plt.子批次()
图设置尺寸英寸(7,3)
df=pd.DataFrame(数据,列=['Player','Pos','Age'])
df.plot.scatter(x='Age',
y='Pos',
c='DarkBlue',xticks=([15,20,25,30,35,40]))
y=df.Player
文本=[]
对于i,枚举(y)中的txt:
plt.text()
at.调整文本(文本,arrowprops=dict(arrowstyle=“简单,头部宽度=0.25,尾部宽度=0.05”,颜色=黑色,lw=0.5,alpha=0.5))
plt.show()
数据摘要:

df.head()
玩家位置年龄
0 Thibaut Courtois GK 28
1卡里姆·本泽马FW 32
2塞尔吉奥·拉莫斯DF 34
3拉斐尔·瓦兰DF 27
4 Luka Modric MF 35
错误:

ConversionError:无法将值转换为轴单位:“GK”

这是迄今为止的情节;无法标记这些点:

编辑: 这是我想要的,但所有要点中:

另外,有人能帮我重新订购雅克斯牌的标签吗。 比如,我想让FW,MF,DF,GK作为我的命令,但情节是MF,DF,FW,GK


谢谢。

描述了类似的解决方案。基本上,您希望在散点图中注释点

我已经删除了你的代码。请注意,您需要使用
matplotlib
(而不是
pandas
)绘制数据:
df=pd.DataFrame(数据,列=['Player','Pos','Age'])
。这样,您就可以使用
annotation()
-方法

导入matplotlib.pyplot作为plt
作为pd进口熊猫
#构建数据
数据=[
[Thibaut Courtois',GK',28],
[Karim Benzema',FW',32],
[Sergio Ramos',DF',34],
['Raphael Varane','DF',27],
['Luka Modric','MF',35],
]
#创建数据帧
df=pd.DataFrame(数据,列=['Player','Pos','Age'])
#开放图形+轴
图,ax=plt.子批次()
#密谋
最大散射(x=df['Age'],y=df['Pos'],c='DarkBlue')
#设置标签
ax.set_xlabel('Age'))
ax.set_ylabel('Pos')
#注释轴中的点
对于idx,df.iterrows()中的行:
ax.注释(第['Player']、(第['Age']行、第['Pos']行)
#强制matplotlib绘制图形
plt.show()
这是您将得到的输出:


你说的“标记这些点”是什么意思?你能指出结果应该是什么样子吗您可能希望创建一个包含数据的应用程序,以便人们可以实际运行您的应用程序code@max编辑问题您可以通过对保存轴标签的列表重新排序来对轴标签重新排序。因此,第一步是为三列中的每一列创建一个列表-这将使您更容易开始使用(和操作)数据。执行此操作,然后重新讨论我之前帮助过您的问题-如果您在这之后仍然卡住,请让我们知道。您知道如何使标签彼此不重叠吗?如果希望标签不重叠其对应点,请使用
textcoords='offset points'
选项。看一看这张照片。帮助也很好。我不确定是否有一个选项,如果你的点非常接近,标签会相互重叠。然后,您可能希望使用部分标签上的箭头