python matplotlib: как переместить шкалу на другую сторону оси?

У меня есть эта странная вещь с масштабом оси, показанным на рисунке:

И что я хочу иметь: Как я могу переместить шкалу на другую сторону оси?

x=range(len(ticks))
plt.plot(x,phase1,'r^-',label='$\Delta \phi(U1,I1)$')
plt.plot(x,phase2,'go-',label='$\Delta \phi(U2,I2)$')
plt.plot(x,phase3,'b*-',label='$\Delta \phi(U3,I3)$')
plt.xticks(x,ticks,rotation=45)
plt.xlabel('Messung')
plt.ylabel('$\Delta \phi [^\circ]$')
plt.legend()
plt.show()

2 ответа

Решение

Ты можешь использовать plt.tick_params() чтобы настроить поведение галочек, документацию можно найти здесь.

Для вашего примера вы хотите, чтобы галочки появлялись внутри фигуры. Поэтому добавьте

plt.tick_params(direction="in")

к вашему коду. Пример:

x=range(len(ticks))

plt.plot(x,phase1,'r^-',label='$\Delta \phi(U1,I1)$')
plt.plot(x,phase2,'go-',label='$\Delta \phi(U2,I2)$')
plt.plot(x,phase3,'b*-',label='$\Delta \phi(U3,I3)$')

plt.xticks(x,ticks,rotation=45)
plt.xlabel('Messung')
plt.ylabel('$\Delta \phi [^\circ]$')
plt.legend()

plt.tick_params(direction="in") # Set ticks inside the figure

plt.show()

Вы также можете сделать так, чтобы галочки появлялись в верхней и правой части рисунка, как показано на втором снимке экрана, добавив:

plt.tick_params(direction="in",top="on",right="on")

Если вы хотите, чтобы все фигуры в вашем скрипте Python имели такое поведение, вы можете добавить следующее в верхней части скрипта ( это может представлять интерес):

import matplotlib

matplotlib.rcParams['xtick.direction'] = "in"
matplotlib.rcParams['ytick.direction'] = "in"

Это избавит вас от необходимости звонить plt.tick_params() для каждой фигуры, что полезно, если вы генерируете много цифр.

tick_params вашей оси можно использовать для управления метками осей и местоположением галочек. Установите направление на, чтобы они указывали на график.

И вот отличный пример, если вы хотите разные диапазоны оси Y и цвета тоже.

from matplotlib import pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111)
ax.tick_params(direction='in', length=6, width=2, colors='r', right=True, labelright='on')

plt.show()

Другие вопросы по тегам