як увімкнути незначні галочки лише на осі y matplotlib


77

Як я можу повернути незначні галочки лише на осі y на лінійному чи лінійному графіку?

Коли я використовую функцію, minor_ticks_onщоб увімкнути незначні галочки, вони з’являються як на осі x, так і на y.


46
знайшов ..plt.minorticks_on()
drevicko

Відповіді:


55

Неважливо, я це зрозумів.

ax.tick_params(axis='x', which='minor', bottom=False)

4
Використовуючи це, я отримую MatplotlibDeprecationWarningдля використання bottom='off'. Мабуть, ax.tick_params(axis='x',which='minor',bottom=False)слід використовувати замість цього.
Томас Кюн,

29

Ось ще один спосіб, який я знайшов у документації matplotlib :

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.show()

Це дозволить розмістити незначні галочки лише на осі y, оскільки незначні галочки вимкнені за замовчуванням.


2
Я б рекомендував використовувати plt.axes().yaxis.set_minor_locator(MultipleLocator(5))замість першої ініціалізації ml. Якщо ви використаєте повторно, mlце може призвести до жахливих помилок, які важко знайти. Крім того, природніший вибір може бути, AutoMinorLocatorякщо не вимагається щось конкретне.
DerWeh


11

Щоб пояснити процедуру відповіді @ emad, кроки для показу незначних галочок у місцях за замовчуванням:

  1. Увімкніть незначні галочки для об'єкта осей, щоб місця ініціалізувались, як вважає Matplotlib.
  2. Вимкніть незначні галочки, які не бажані.

Мінімальний приклад:

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
plt.plot([1,2])

# Currently, there are no minor ticks,
#   so trying to make them visible would have no effect
ax.yaxis.get_ticklocs(minor=True)     # []

# Initialize minor ticks
ax.minorticks_on()

# Now minor ticks exist and are turned on for both axes

# Turn off x-axis minor ticks
ax.xaxis.set_tick_params(which='minor', bottom=False)

Альтернативний метод

Крім того, ми можемо отримати незначні галочки в місцях за замовчуванням, використовуючи AutoMinorLocator:

import matplotlib.pyplot as plt
import matplotlib.ticker as tck

fig, ax = plt.subplots()
plt.plot([1,2])

ax.yaxis.set_minor_locator(tck.AutoMinorLocator())

Результат

У будь-якому випадку, отриманий графік має незначні галочки лише на осі y.

графік з незначними галочками лише на осі y


5

Крім того, якщо ви хочете лише незначні галочки на фактичній осі y, а не як на лівій, так і на правій частині графіка, ви можете слідувати за plt.axes().yaxis.set_minor_locator(ml)символом plt.axes().yaxis.set_tick_params(which='minor', right = 'off'), наприклад:

import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator

a = np.arange(100)
ml = MultipleLocator(5)
plt.plot(a)
plt.axes().yaxis.set_minor_locator(ml)
plt.axes().yaxis.set_tick_params(which='minor', right = 'off')
plt.show()

0

Наступні фрагменти повинні допомогти:

from matplotlib.ticker import MultipleLocator
ax.xaxis.set_minor_locator(MultipleLocator(#))
ax.yaxis.set_minor_locator(MultipleLocator(#))

# refers to the desired interval between minor ticks.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.