如何在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() # 新增:确保图像显示出来
关键改动说明
- 导入格式化工具:新增
from matplotlib.ticker import ScalarFormatter,这是Matplotlib专门用来控制刻度显示格式的工具。 - 获取坐标轴对象:用
plt.gca()拿到当前的坐标轴,这样我们可以精准修改X轴的设置,不会影响Y轴。 - 固定指数格式:
set_powerlimits((-6, -6))是核心——它强制让X轴的科学计数法指数固定为-6,这样刻度就会显示成你想要的1e-06格式,而不是默认的1e-05。 - 修正图例参数:你原来的
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
相关产品推荐
相关产品推荐

