如何修改Matplotlib的y轴刻度标签?解决转换错误
解决Matplotlib散点图布尔值y轴刻度标签的ConversionError问题
核心原因
Matplotlib会默认把布尔值映射为数值(True对应1,False对应0),直接设置字符串刻度标签时,会因类型不兼容触发转换错误。
解决方案
先指定y轴刻度的数值位置,再对应替换为布尔值文本标签,具体步骤如下:
1. 正常绘制散点图
先传入你的布尔值数据完成绘图:
import matplotlib.pyplot as plt # 示例数据(替换为你的df_param) df_param = { 'x': [1, 2, 3, 4, 5], 'y': [True, False, True, True, False] } plt.scatter(df_param['x'], df_param['y'])
2. 设置y轴刻度与标签
明确指定刻度的数值位置(对应布尔值的映射值),再替换为目标文本标签:
# 刻度位置对应False=0、True=1,标签设为["False", "True"] plt.yticks([0, 1], ['False', 'True'])
3. 可选:调整y轴范围(优化显示)
避免标签偏移,可手动设置y轴范围:
plt.ylim(-0.2, 1.2)
完整代码示例
import matplotlib.pyplot as plt df_param = { 'x': [1, 2, 3, 4, 5], 'y': [True, False, True, True, False] } plt.scatter(df_param['x'], df_param['y']) plt.yticks([0, 1], ['False', 'True']) plt.ylim(-0.2, 1.2) plt.xlabel('X轴') plt.ylabel('布尔值') plt.title('布尔值散点图') plt.show()
原理说明
通过[0,1]指定刻度的数值位置,匹配Matplotlib对布尔值的默认映射规则,再用字符串标签替换对应位置的显示文本,从根源避免类型转换冲突。
内容的提问来源于stack exchange,提问作者Priyanka Rajendran
相关产品推荐
相关产品推荐

