Matplotlib图表中如何将mps风速转换为mph显示?
解决Matplotlib风速单位从mps转mph的显示问题
有两种简单实用的方法可以实现需求,不用大幅改动现有代码:
方法一:直接转换数据后绘图
如果不介意调整数据的存储形式,直接把mps格式的风速数据批量转成mph再绘图即可:
# 假设你的原始风速数据是wind_speed_mps,时间序列数据是time wind_speed_mph = [mps_to_mph(mps) for mps in wind_speed_mps] # 批量转换单位 # 用转换后的数据绘图,同步修改坐标轴标签 plt.plot(time, wind_speed_mph) plt.ylabel("风速 (mph)") # 明确标注新单位 plt.show()
方法二:用刻度格式化器(保留原始数据)
如果需要保留原始mps数据的逻辑,不想改动数据本身,可以用Matplotlib的刻度格式化器自动转换显示值:
from matplotlib.ticker import FuncFormatter # 先正常用mps数据完成绘图初始化 fig, ax = plt.subplots() ax.plot(time, wind_speed_mps) # 创建单位转换格式化器,将刻度值从mps转成mph并格式化显示 mph_formatter = FuncFormatter(lambda x, pos: f"{mps_to_mph(x):.1f}") ax.yaxis.set_major_formatter(mph_formatter) # 把格式化器应用到风速对应的坐标轴(这里假设是y轴) # 修改坐标轴标签为mph ax.set_ylabel("风速 (mph)") plt.show()
这种方式下,后台计算仍用原始mps数据,但图表上显示的刻度值已经是转换后的mph,适合需要保留原始数据链路的场景。
内容的提问来源于stack exchange,提问作者Sarah Bednarskivmhdn Xxbsr2q s
相关产品推荐
相关产品推荐

