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