matplotlib如何获取图表y轴数值基数并保存为变量用于后续运算
解决方案
你可以通过matplotlib轴对象的格式化器(Formatter)获取y轴的科学计数法基数,需要先触发一次画布渲染(matplotlib默认延迟计算刻度参数,不提前渲染拿不到计算后的基数)。
完整可运行代码示例:
import numpy as np import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [0.000001,0.000002,0.000003,0.000004,0.000005] fig, axs = plt.subplots(nrows=1, ncols=1, figsize=(8, 4)) axs.plot(x,y) # 先触发画布渲染,计算刻度参数 fig.canvas.draw() # 获取y轴主刻度的格式化器 y_axis_formatter = axs.yaxis.get_major_formatter() # 获取基数的字符串形式,本例返回 "1e-6" base_str = y_axis_formatter.get_offset() # 转成数值用于后续运算 base_number = float(base_str) if base_str else 1.0 print(base_number) # 输出 1e-6 fig.tight_layout() plt.show()
补充说明:
- 当y轴没有触发科学计数法显示时,
get_offset()会返回空字符串,此时基数默认为1即可 - 如果你需要固定基数的显示逻辑,可以主动调用
y_axis_formatter.set_powerlimits()配置科学计数法的触发阈值,避免动态变化带来的异常
内容的提问来源于stack exchange,提问作者Leo Odriozola
相关产品推荐
相关产品推荐

