Matplotlib, как сделать отметки внутри с одной стороны и снаружи с другой? - PullRequest
0 голосов
/ 28 июня 2019

Я хотел бы иметь соответствующие отметки как на левой, так и на правой оси Y. Однако я хотел бы, чтобы левые тики оси Y находились вне осей, а правые тики оси Y были внутри осей.

Что у меня есть:

import matplotlib.pyplot as plt
ax = plt.subplot(1,1,1)
ax.tick_params(axis='y',which='both',direction='in',right=True)

Есть ли способ заставить ax.tick_params() работать только на правой оси?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Тики фактически одинаковы на обеих сторонах осей, поэтому их нельзя изменить только для одной стороны осей.

Решение для matplotlib <3.1: </h3> В дополнение к ответу @ Sheldore, вероятно, хотелось бы разделить двойные оси, иначе обе стороны не синхронизированы. import matplotlib.pyplot as plt fig, ax = plt.subplots() ax.tick_params(axis="y", direction='in', length=8) ax2 = ax.twinx() ax2.tick_params(direction="out", right=True, length=8) ax2.get_shared_y_axes().join(ax,ax2) plt.show() Решение для matplotlib> = 3.1

В Matplotlib 3.1 введены вторичные оси.Это полезно во многих случаях, когда ранее требовалось неправильно использовать двойные оси, как указано выше.Преимущество состоит в том, что без дополнительных аргументов он будет синхронизироваться автоматически.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()

ax.tick_params(axis="y", direction='in', length=8)

ax2 = ax.secondary_yaxis("right")
ax2.tick_params(axis="y", direction="out", length=8)

plt.show()

Вывод одинаков в обоих случаях:

enter image description here

0 голосов
/ 28 июня 2019

Я думаю, вам нужно определить двойную ось, чтобы достичь этого. В частности, вы можете сделать

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.tick_params(axis='y', direction='out')

ax1 = ax.twinx()
ax1.tick_params(axis='y',direction='in')

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...