Я хотел бы построить фигуру с двойной осью 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'))
Значение верхней оси x станет таким же, как и значение нижней оси x, например:
Может кто-нибудь сказать мне, как решить эту проблему, пожалуйста?