Извините, если об этом уже спрашивали, но я еще не видел ничего подобного.
У меня есть df с двумя индексами: энергия и длина волны (см. Ниже). Я хочу построить график этих данных с энергией в качестве первичной оси X (внизу) и длиной волны в качестве вторичной оси X (вверху). См. Образец кадра данных ниже.
![Sample of DF](https://i.stack.imgur.com/Qx86H.png)
Вот что я пробовал до сих пор:
def overlay_plot(dataframe, filename):
sns.set(font_scale=font_scale, font=font_style, style='darkgrid')
sns.set_context('paper')
sns.set_style('whitegrid')
fig, ax1 = plt.subplots(figsize=(fig_width, fig_height))
ax2 = ax1.twiny()
ax1.tick_params(left=True, bottom=True)
ax1.minorticks_on()
ax1.set_xticklabels(ax1.get_xticks(), rotation=270)
ax1.xaxis.set_major_locator(ticker.MultipleLocator(.0005))
ax1.yaxis.set_major_locator(ticker.MultipleLocator(5000))
ax1.grid(which='minor', linestyle=':', linewidth=0.3, color='grey')
ax1.grid(which='major', linestyle='-', linewidth=0.5, color='grey')
ax2.set_xlabel('Wavelength (nm)')
result = re.search('PSeries_(.*)AllSpectra.csv', filename)
plt.title(title_text + result.group(1).replace('_', ' ').replace('p', '.'), fontsize=title_size)
dataframe.plot(ax=ax1).legend(bbox_to_anchor=(1.0, 1.1))
plt.ylabel('Intensity')
Я сделал все «красивые» вещи, но я не уверен, как там работать с другой осью и убедиться, что у них есть собственные системы масштабирования. Строк довольно много (с небольшим отклонением между длиной волны / тиками энергии), поэтому мне нужно иметь возможность устанавливать тики для вероятности 0,1 интервала для длины волны и 0,0001 для энергии.
Любой совет ? Помощь очень ценится! ТИА