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

如何在Anaconda Spider中修改Matplotlib绘图X轴科学计数法从1e-05改为1e-06

如何修改Matplotlib绘图X轴科学计数法的指数格式?

我懂你现在的困扰——用Spyder通过Matplotlib画实验数据图,X轴的科学计数法默认显示成1e-05,但你想要改成1e-06的格式,搜了谷歌也没找到合适的解决办法对吧?别着急,咱们直接通过Matplotlib的刻度格式化工具就能搞定,下面是修改后的完整代码,我会标注出关键改动的地方:

修改后的完整代码

#Import Libraries
import numpy as np
import csv
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter  # 新增:导入刻度格式化工具

#Handling value error
def isfloat(num):
    try:
        float(num)
        return True
    except ValueError:
        return False

#import csv file
with open( 'try1.csv', 'r') as i:
    file01= list(csv.reader(i,delimiter=','))[2:]
file02=[[float(k) if (isfloat(k)) else 0 for k in j] for j in file01]

# Picking the values only
#creating a numpy array
Data= np.array(file02, dtype=float)
xdata= Data[:,0][::280]
ydata= Data[:,1][::280]

#Plot
plt.figure(1,dpi=800)
plt.title('Force Spectroscopy')
plt.ylabel('Vertical Deflection')
plt.xlabel('Measured Height')
plt.style.use(['seaborn_grid'])
plt.plot(xdata,ydata, color='green',label=('Experimental data'))

#Theoritical Plot
new= -(0.107e-5)*xdata
plt.plot(xdata,new, color= 'purple',label='Theoritical')

# ------------------- 核心修改部分 -------------------
ax = plt.gca()  # 获取当前坐标轴对象
# 强制X轴使用科学计数法
ax.ticklabel_format(axis='x', style='sci', scilimits=(0, 0))
# 获取X轴的格式化器,固定指数为-6(即显示为1e-06)
x_formatter = ax.xaxis.get_major_formatter()
x_formatter.set_powerlimits((-6, -6))
# ---------------------------------------------------

#Legend Modification(修正了你原来的参数错误)
plt.legend(loc='upper right', fontsize=20)
plt.show()  # 新增:确保图像显示出来

关键改动说明

  1. 导入格式化工具:新增from matplotlib.ticker import ScalarFormatter,这是Matplotlib专门用来控制刻度显示格式的工具。
  2. 获取坐标轴对象:用plt.gca()拿到当前的坐标轴,这样我们可以精准修改X轴的设置,不会影响Y轴。
  3. 固定指数格式:set_powerlimits((-6, -6))是核心——它强制让X轴的科学计数法指数固定为-6,这样刻度就会显示成你想要的1e-06格式,而不是默认的1e-05。
  4. 修正图例参数:你原来的plt.legend('upper right',fontsize=20)参数写错了,第一个参数应该是loc='upper right',不然图例位置的设置不会生效,我已经帮你修正了。

备选方案(修改数据+标注)

如果上面的格式化方法你觉得麻烦,也可以直接调整X轴数据的量级,再在标签里注明:

# 修改xdata的量级,把原来的数值除以10
xdata_scaled = xdata / 10
# 绘图时用缩放后的数据
plt.plot(xdata_scaled, ydata, color='green', label=('Experimental data'))
plt.plot(xdata_scaled, new/10, color='purple', label='Theoritical')  # 理论曲线也要同步缩放
# 修改X轴标签,注明量级
plt.xlabel('Measured Height ($\\times10^{-6}$)')

这种方法更直观,适合不想折腾格式化器的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:32:31