Сортировка меток на подзаголовках, созданных с помощью fig.add_axes

#matplotlib #plot #axis-labels

#matplotlib #график #ось-метки

Вопрос:

Я новичок в python и в настоящее время играю с mathplotlib. Ниже приведен мой код для графика, показанный на нижнем рисунке.

 import matplotlib.pyplot as plt
f = plt.figure(figsize=(15, 15))

ax1 = f.add_axes([0.1, 0.5, 0.8, 0.5],
                   xticklabels=[])
ax2 = f.add_axes([0.1, 0.4, 0.8, 0.1])

ax1.plot(particles[0, :, 0])
ax1.plot(particles[1, :, 0])
ax2.plot(distances[:])

# Prettifying the plot
plt.xlabel("t", fontsize=25)     
plt.tick_params(                 # modifying plot ticks
    axis='x', 
    labelsize=20)
plt.ylabel("x", fontsize=25)     
plt.tick_params(                 # modifying plot ticks
    axis='y',
    labelsize=20)

# Plot title
plt.title('Harmonic oscillator in '   str(dim)   'D with '   str(num_step)   ' timesteps', fontsize=30)

# Saving the plot
#plt.savefig("results/2D_dif.png")
  

График

Два графика имеют размеры и положения, как я желаю, но, как вы можете видеть, метки и заголовок отключены. Я хочу иметь тот же стиль меток, который был применен к нижнему графику, с y-меткой верхнего графика, читаемой «x», и заголовком «Гармонический осциллятор …», находящимся поверх первого графика.

Я искренне благодарю вас за вашу помощь!

Комментарии:

1. Используйте ax1.set_title(..) , ax2.set_xlabel(..) или что угодно еще, что вам нужно применить к соответствующим осям.

Ответ №1:

Здесь plt выполняется действие с самым последним созданным экземпляром axes ( ax2 в данном случае). Вот почему шрифты не изменились для ax1 !

Итак, чтобы получить то, что вы хотите, вам нужно явно воздействовать на оба ax1 и ax2 . Что-то вроде следующего должно сработать:

 for ax in ax1, ax2:
    # Prettifying the plot
    ax.set_xlabel("t", fontsize=25)     
    ax.tick_params(                 # modifying plot ticks
        axis='x', 
        labelsize=20)
    ax.set_ylabel("x", fontsize=25)     
    ax.tick_params(                 # modifying plot ticks
        axis='y',
        labelsize=20)

    # Plot title
    ax.set_title('Harmonic oscillator in '   str(dim)   'D with '   str(num_step)   ' timesteps', fontsize=30)
  

Комментарии:

1. При вызове ax.plot вам нужно добавить метки. например, ax1.plot(particles[0, :, 0], label='Particle 1') , ax1.plot(particles[0, :, 0], label='Particle 2') и затем ax1.legend() .