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

如何修复Matplotlib绘图中Y轴刻度数值混乱的问题

解决Matplotlib Y轴刻度混乱的问题

嘿,这个问题我之前也踩过坑!你的图表内容正确,但Y轴刻度混乱的核心原因是:你用来存储温度和湿度的temp和hum列表是字符串类型,而非数值类型(整数/浮点数)。

为什么会出现这个问题?

Matplotlib在处理字符串列表时,会把每个字符串当作独立的离散类别,而不是连续的数值。它会按照字符串首次出现的顺序来排列Y轴刻度,所以就出现了26→25→24→37这种看似混乱的顺序——因为37是湿度列表里第一个出现的字符串,Matplotlib就把它放到了类别序列的后面。

解决方案:转换为数值类型

只需要把temp和hum转换成整数列表(如果有小数就转成浮点数),Matplotlib就会把Y轴当作连续数值轴处理,刻度自然就会按正常数值顺序排列了。

修正后的完整代码

import matplotlib.pyplot as plt

temp = ['26', '26', '25', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24', '24']
hum = ['37', '38', '38', '39', '39', '40', '40', '40', '40', '40', '40', '40', '40', '41', '40', '39', '39', '39', '39', '39', '39', '39', '39']
time = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 105, 110, 115]

# 将字符串列表转换为整数列表
temp = [int(t) for t in temp]
hum = [int(h) for h in hum]

plt.plot(time, temp, color="green", label="Temperature")
plt.plot(time, hum, color="orange", label="Humidity")
plt.xlabel("time (minutes)")
plt.ylabel("Temp/Humidity (C, %)")  # 修正了原代码里的括号错误
plt.title("Temp and Humidity over time")
plt.legend()  # 添加图例,方便区分两条曲线
plt.show()

额外优化说明

我还顺手修正了原代码里的两个小问题:

  • 变量名错误:原代码里用了temperature和humidity,但你定义的变量是temp和hum,已经统一过来了
  • Y轴标签的括号错误:原代码最后多了一个右括号,已经修正
  • 添加了图例,让图表更易读

这样修改后,你的Y轴刻度就会按照正常的数值顺序排列,图表可读性也会提升不少!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:29:03