Я хочу создать многолинейный график, отображающий данные некоторых экспериментов. Затем я хочу добавить гистограмму на вторичной оси, показывающую процентную разницу между двумя повторениями одного и того же эксперимента.
Вот код, который я использую:
data_1 =[10, 15, 13, 20, 18, 22, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90] data_2 = [8, 12, 14, 22, 16, 18, 20, 28, 30, 35, 38, 40, 44, 48, 52, 60, 65, 70, 75, 80] дельта=[] для n1,n2 в zip(data_1,data_2): delta.append((n1-n2)/n2) данные = { 'n': диапазон (1, 21), 'данные_1': данные_1, 'данные_2': данные_2, 'дельта': дельта } df = pd.DataFrame(данные) # Создаем подсюжеты рис, ax1 = plt.subplots() # Создайте линейный график для «Модельного времени» на первой оси Y (ax1) sns.lineplot(data=df, x='n', y='data_1', label='data_1', ax=ax1) sns.lineplot(data=df, x='n', y='data_2', label='data_2', ax=ax1) # Создайте вторую ось Y для гистограммы топор2 = топор1.twinx() sns.barplot(data=df, x='n', y='delta', color='gray', альфа = 0,5, ax=ax2, label='delta') # Установить заголовок и метки графика plt.title('Эксперименты') ax1.set_xlabel('Номер эксперимента') ax1.set_ylabel('Время') ax2.set_ylabel('Дельта') # Добавляем легенду линии, метки = ax1.get_legend_handles_labels() линии2, метки2 = ax2.get_legend_handles_labels() ax1.legend(lines +lines2, labels + label2, loc='нижний правый') plt.show() Проблема в том, что на конечном графике линейные графики сдвинуты на 1 x вправо, как показано на следующем рисунке.

Можете ли вы мне помочь?
Мобильная версия