在使用matplotlib进行数据可视化或科学计算可视化时,有时候数值过大或过小,使得坐标轴刻度显示不方便,这时可以考虑使用科学计数法,例如把10000显示为,把0.00001显示为
。在使用matplotlib绘图时,图形标题、坐标轴标签以及刻度文本的字符串两侧如果加上$符号,即可自动调用Latex引擎将字符串渲染为公式,字符串中符号^后面的单个字符会被渲染为上标,如果上标有多于1个字符,可以放在一对花括号{}中。
代码实现如下:
import numpy as np
import matplotlib.pyplot as plt
x= np.arange(-10,10,0.1)
y=np.sin(x)
plt.plot(x,y)
def func(num):
pre,aft=f'{num:.2e}'.split('e')
return f'${float(pre):.1f}x10^'+'{'+str(int(aft))+'}$'
plt.xticks(range(-10,12,3),list(map(func,range(-10,12,3))))
plt.yticks(np.arange(-1,1.1,0.25),
list(map(func,np.arange(-1,1.1,0.25))))
plt.show()
运行后的效果如下: