如何解决scatter chart中text labels被替换为数字无法正常显示的问题
散点图绑定自定义文本标签配置方案
涉及数据集结构
- 文本标签列取值:
Dec-20、Jan+21、Feb-21、Mar+21、Apr_21 - Ham字段对应数值:
20、1、0.5、0.9、0.1 - spam字段对应数值:
0.5、3、15、4、1 - 异常表现:绘图时原有自定义文本标签被自动替换为数字序号,无法和数据点绑定显示
解决方法
出现数字序号替换自定义标签的问题,本质是绘图时没有显式指定标签映射规则,也没有添加文本标注图层,以下是最常用的Python Matplotlib环境下的正确配置代码:
import matplotlib.pyplot as plt import pandas as pd # 加载/构造目标数据集 df = pd.DataFrame({ 'text_label': ['Dec-20', 'Jan+21', 'Feb-21', 'Mar+21', 'Apr_21'], 'Ham': [20, 1, 0.5, 0.9, 0.1], 'spam': [0.5, 3, 15, 4, 1] }) # 绘制基础散点图 plt.scatter(data=df, x='Ham', y='spam') # 核心配置:逐点绑定对应文本标签 for _, row in df.iterrows(): # 可调整xytext参数设置标签和散点的偏移距离,避免遮挡 plt.text( x=row['Ham'], y=row['spam'], s=row['text_label'], xytext=(6, 6), textcoords='offset points' ) # 配置坐标轴名称 plt.xlabel('Ham') plt.ylabel('spam') plt.show()
如果是使用R语言ggplot2绘图,核心逻辑相同:在散点图层后追加
geom_text(aes(label = 文本标签列名))图层,即可绑定显示对应文本,不会被替换为数字序号。
内容的提问来源于stack exchange,提问作者Shane S
相关产品推荐
相关产品推荐

