#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()
.