【发布时间】:2019-06-07 17:18:47
【问题描述】:
我想绘制一个带有双 x 轴的图形,并将上轴的刻度标签格式化为科学计数法。
import numpy as np
import matplotlib.pyplot as plt
imp1=np.arange(0,2,2/50)
imp1_pdf=np.arange(0,6,6/50)
fig1=plt.figure()
axs1=fig1.add_subplot(111)
axs1.set_xlim(0,2)
axs1.set_ylim(0,6.5)
axs2 = axs1.twiny()
axs1.plot(imp1,imp1_pdf)
new_tick_locations=axs1.get_xticks()
axs2.set_xticks(new_tick_locations)
axs2.set_xticklabels(new_tick_locations/1000)
axs2.axes.ticklabel_format(axis='x',style='sci',scilimits=(0,0))
axs1.grid(b=True, which='major',linestyle='-')
fig1.tight_layout()
fig1.savefig('tickformat.png',dpi=600)
但是当我尝试格式化上x轴时,出现如下错误:
AttributeError:此方法仅适用于 ScalarFormatter。
如果我使用另一种方法,那就是使用FormatStrFormatter
from matplotlib.ticker import FormatStrFormatter
axs2.xaxis.set_major_formatter(FormatStrFormatter('%.1e'))
谁能告诉我如何解决这个问题?
【问题讨论】:
标签: python-3.x matplotlib formatting