如何在Seaborn散点图的数据点左上方添加人名标签?
解决散点图添加数据点人名标注的问题
数据集结构
| People | Height | weight |
|---|---|---|
| Neil | 186 | 90 |
| Olaf | 187 | 60 |
| Jake | 188 | 75 |
| Mitt | 189 | 77 |
| Gaby | 181 | 62 |
| Sam | 180 | 65 |
原代码问题
原代码存在两处问题:
- 未定义变量
g,调用g.set()会触发报错,应使用创建好的ax对象设置坐标轴标签 - 缺少给每个散点添加人名标注的逻辑
可行解决方案
通过遍历数据集的每一行数据,使用ax.text()在每个数据点的左上方添加对应人名。调整文本的坐标偏移量,保证标注位置合理且不遮挡数据点。
完整代码如下:
import matplotlib.pyplot as plt import seaborn as sns _, ax = plt.subplots(figsize=(5,5)) # 绘制散点图 sns.scatterplot(x=df['Height'], y=df['weight'], ax=ax) # 设置坐标轴标签 ax.set(xlabel='height', ylabel='weight') # 添加图表标题 plt.title("relationship between height and weight") # 遍历数据,为每个点添加人名标注 for idx, row in df.iterrows(): # 偏移坐标,让标注显示在数据点左上方 ax.text(row['Height'] - 1, row['weight'] + 1, row['People']) plt.show()
代码说明
- 用
df.iterrows()遍历每行数据,提取每个人的身高、体重和名字信息 ax.text()的前两个参数为标注坐标,通过对原始坐标做微小偏移(row['Height'] -1和row['weight'] +1),确保标注位于数据点左上方- 将原代码的
g.set()替换为ax.set(),匹配当前绘图使用的ax对象
内容的提问来源于stack exchange,提问作者user20859200
相关产品推荐
相关产品推荐

