Відповіді:
Крім того, якщо ви хочете просто встановити кількість кліщів, дозволяючи matplotlib розміщувати їх (наразі лише з MaxNLocator
) pyplot.locator_params
,
pyplot.locator_params(nbins=4)
Ви можете вказати конкретну вісь у цьому методі, як зазначено нижче, за замовчуванням - це обидва:
# To specify the number of ticks on both or any single axes
pyplot.locator_params(axis='y', nbins=6)
pyplot.locator_params(axis='x', nbins=10)
numticks
nbins
numticks
рішення для логарифмічних сюжетів, як вказувало @meduz?
[0, 1, ..., 99]
а тепер один набір nticks=10
, то нові розріджені мітки розміщуватимуться в десять разів довше, крім осі, тобто тепер 1
будуть сидіти там, де 9
було, 2
де 19
було ... і 9
де 99
було.
Якщо хтось все-таки отримує цю сторінку в результатах пошуку:
fig, ax = plt.subplots()
plt.plot(...)
every_nth = 4
for n, label in enumerate(ax.xaxis.get_ticklabels()):
if n % every_nth != 0:
label.set_visible(False)
Щоб вирішити питання щодо налаштування та появи кліщів, дивіться посібник з локаторів тиків на веб-сайті matplotlib
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
Установив би загальну кількість кліщів по осі x 3 і рівномірно розподілив її по осі.
Про це також є хороший підручник
ax = df.plot()
pandas.DataFrame
) з індексом дати [2019-01-01, ... 2019-11-01], зателефонуйте ax = df.plot()
, поверніть об'єкт фігури. ax.xaxis.set_major_locator(plt.MaxNLocator(3))
покажіть лише перші виклики 3 [2019-01-01, 2019-01-02, 2019-01-03].
df.plot()
часто відображається minor_locator
, тому ви можете спробувати ax1.xaxis.set_minor_locator(plt.MaxNLocator(3))
. Також не забудьте замінити 3
кількість кліщів, які ви хочете відобразити. Для панд таймсерій я рекомендую import matplotlib.dates as mdates
і працювати ax.xaxis.set_minor_locator(mdates.MonthLocator(interval = 1))
зax.xaxis.set_minor_formatter(mdates.DateFormatter('%m-%Y'))
Існує set_ticks()
функція для об'єктів осі.
get_xticks()
або get_yticks()
спочатку для об'єкта осей, відредагувати за потребою, а потім передати список назад до set_ticks()
.
set_ticks()
, але я маю set_xticks()
і set_yticks()
. Це атрибути об'єктів осей, а не осі. Можливо, це змінилося за останні пару років.
на випадок, якщо комусь це все-таки потрібно, і оскільки тут нічого для мене не працювало, я придумав дуже простий спосіб, який зберігає зовнішній вигляд створеного сюжету "як є", фіксуючи кількість кліщів точно N:
import numpy as np
import matplotlib.pyplot as plt
f, ax = plt.subplots()
ax.plot(range(100))
ymin, ymax = ax.get_ylim()
ax.set_yticks(np.round(np.linspace(ymin, ymax, N), 2))
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
Рішення, яке дав @raphael, є простим і дуже корисним.
Все-таки відображувані мітки не будуть вибірені значеннями з оригінального розподілу, а з індексів, повернутих масивом np.linspace(ymin, ymax, N)
.
Для відображення N значень, рівномірно розташованих від оригінальних міток, використовуйте set_yticklabels()
метод. Ось фрагмент для осі y з цілими мітками:
import numpy as np
import matplotlib.pyplot as plt
ax = plt.gca()
ymin, ymax = ax.get_ylim()
custom_ticks = np.linspace(ymin, ymax, N, dtype=int)
ax.set_yticks(custom_ticks)
ax.set_yticklabels(custom_ticks)
Якщо використовується масштаб журналу, кількість основних тиків може бути зафіксована за допомогою наступної команди
import matplotlib.pyplot as plt
....
plt.locator_params(numticks=12)
plt.show()
Значення, встановлене для numticks
визначення кількості кліщів осі, що відображаються.
Зарахування до публікації @ bgamari за введення locator_params()
функції, але nticks
параметр видає помилку, коли використовується масштаб журналу.
pyplot.locator_params(axis = 'x', nbins = 4)
(абоaxis = 'y'
) зробити процес дійсно простим. Дякую @bgamari!