як увімкнути незначні галочки лише на осі 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.