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

如何在Matplotlib的Y轴刻度中添加摄氏度(°C)符号

给Matplotlib Y轴刻度标签添加°C符号

我懂你要的是什么——不是只给Y轴标题加°C,而是让每个刻度数字后面都带上这个单位对吧?你现在的代码只设置了轴标题和刻度位置,没处理刻度标签的内容,咱们来解决这个问题,有两种简单的方法:

方法1:手动生成带单位的刻度标签

如果你已经像现在这样手动指定了刻度的位置(用np.arange),那直接生成对应的带°C的标签列表就行:

import matplotlib.pyplot as plt
import numpy as np

# 假设你的数据和原来定义的miny、maxy
miny = 0
maxy = 100

plt.plot([1,2,3], [20,50,80])

# 设置Y轴标题(建议改成“温度”更清晰,当然你也可以保留原来的写法)
plt.ylabel('温度', fontsize=30)

# 生成刻度位置和对应的带°C标签
tick_positions = np.arange(miny, maxy + 20, step=20)  # 加step是为了确保刻度范围包含maxy
tick_labels = [f'{pos}°C' for pos in tick_positions]

# 同时设置刻度位置和标签
plt.yticks(tick_positions, tick_labels, labelsize=20)

plt.tick_params(labelsize=20)
plt.show()

这里用f-string把每个刻度位置和°C拼接起来,Matplotlib完全支持这个Unicode符号,所以直接写就行,不用额外处理编码问题。

方法2:用FuncFormatter自动格式化(更灵活)

如果有时候你不想手动指定刻度位置,或者刻度是Matplotlib自动生成的,用FuncFormatter会更方便——它能自动给每个Y轴刻度加上单位:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FuncFormatter

# 示例数据
x = np.arange(1, 13)
y = np.random.randint(0, 100, size=12)
miny = y.min()
maxy = y.max()

plt.plot(x, y)

plt.ylabel('温度', fontsize=30)
# 可以手动指定刻度位置,也可以省略让Matplotlib自动生成
plt.yticks(np.arange(miny, maxy, step=20), labelsize=20)

# 定义格式化函数:输入刻度值x和位置pos,返回带单位的字符串
def format_temperature(x, pos):
    # 如果刻度是整数,转成int让标签更整洁;如果是小数就直接用x
    return f'{int(x)}°C' if x.is_integer() else f'{x}°C'

# 把这个格式化函数应用到Y轴的主刻度上
plt.gca().yaxis.set_major_formatter(FuncFormatter(format_temperature))

plt.tick_params(labelsize=20)
plt.show()

这个方法的好处是,哪怕你调整了数据范围,或者让Matplotlib自动选刻度,标签都会自动带上°C,不用每次都手动改标签列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:36:45