You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

matplotlib设置Y轴字符串值 实现Y轴从上到下顺序为++、+、0、-

Matplotlib自定义Y轴标签顺序解决方案

你遇到的问题根源是matplotlib默认会对字符串类型的Y轴取值按ASCII字典序自动排序,和你需要的++ > + > 0 > -优先级不符,直接反转坐标轴无法改变底层的排序规则,所以没有效果。

你可以通过「自定义标签-数值映射」的方式手动控制Y轴顺序,修改后的完整代码如下:

import matplotlib.pyplot as plt

x = ['斯巴鲁森林人', '本田CRV', '丰田RAV4', '日产奇骏', '马自达CX-5', '起亚智跑', '福特锐际', '大众途观L限量版','大众途观L', '三菱欧蓝德', '雪佛兰探界者', '现代途胜','GMC Terrain','Jeep自由光','Jeep指南者']
y = ['+', '++','++','+','++','+','0','0','+','0','0','0','0','-','0']

# 自定义Y轴标签优先级,数值越大在轴上位置越靠上
y_map = {'++':3, '+':2, '0':1, '-':0}
# 将原始字符串标签转换为对应数值
y_num = [y_map[tag] for tag in y]

BIGGER_SIZE = 40

plt.rc('ytick', labelsize=BIGGER_SIZE)
plt.rc('xtick', labelsize=BIGGER_SIZE)

plt.rcParams["figure.figsize"] = (90, 40)
plt.title('车型推荐度统计')
plt.xticks(rotation=90)
plt.xlabel('车型')
plt.ylabel('车主推荐度')

# 用映射后的数值绘制柱状图
plt.bar(x, y_num)
# 替换Y轴刻度为自定义标签,按从上到下顺序排列
plt.yticks([3,2,1,0], ['++', '+', '0', '-'])

plt.show()

修改后Y轴会完全按照你需要的从上到下++、+、0、-的顺序显示。

原有代码运行效果参考:
运行结果截图

内容的提问来源于stack exchange,提问作者Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 23:57:03