如何在Matplotlib中用定性值(文字)替换定量值作为Y轴标签
用Matplotlib绘制定量X轴对应定性Y轴的图表
原Stack Overflow示例核心逻辑解释
原示例的核心思路是先把定性Y值转换成数值,绘图后再将Y轴刻度替换为文字标签,本质是绕开Matplotlib仅支持数值型坐标轴的限制,步骤拆解:
- 给每个定性类别分配对应数字(比如
low→0、medium→1、high→2) - 用转换后的数值完成绘图
- 最后把Y轴的数字刻度替换回定性文字,让图表显示直观的类别名称
针对你需求的易懂实现案例
直接匹配你X取值1-10、Y对应low/medium/high的需求,写极简可运行的代码:
步骤1:导入库并准备数据
import matplotlib.pyplot as plt # 准备X定量值和对应Y定性值 x_values = list(range(1, 11)) # X从1到10 y_labels = ['low']*3 + ['medium']*3 + ['high']*4 # 对应X的Y定性标签 # 将定性标签映射为数值(供Matplotlib绘图使用) label_mapping = {'low': 0, 'medium': 1, 'high': 2} y_numeric = [label_mapping[label] for label in y_labels]
步骤2:绘制图表并替换Y轴刻度
plt.figure(figsize=(8, 5)) # 用散点图展示,换成plt.plot()可绘制折线图 plt.scatter(x_values, y_numeric, color='darkorange', s=60) # 关键操作:把Y轴数字刻度替换为定性标签 plt.yticks(ticks=[0, 1, 2], labels=['low', 'medium', 'high']) # 添加基础标注 plt.xlabel('X(定量值)') plt.ylabel('Y(定性类别)') plt.title('X定量值与Y定性类别对应图') # 可选:添加Y轴网格线,更清晰区分类别 plt.grid(axis='y', linestyle='--', alpha=0.6) plt.show()
代码说明
- 把定性标签转成数值是必要操作,因为Matplotlib原生只支持数值坐标轴
plt.yticks()是实现定性Y轴的核心:ticks指定要替换的数值位置,labels对应替换成的文字标签- 如果需要折线图,只需把
plt.scatter()替换为plt.plot(x_values, y_numeric, marker='s', linestyle='-', color='darkorange')即可
内容的提问来源于stack exchange,提问作者Dema Govalla
相关产品推荐
相关产品推荐

