Сортировка надписей на участках, созданных с помощью fig.add_axes - PullRequest
0 голосов
/ 09 марта 2019

Я новичок в 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")

Plot

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

Благодарю за помощь!

1 Ответ

0 голосов
/ 09 марта 2019

Здесь plt действует на самый последний созданный экземпляр осей (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)
...