У меня слишком много тиков на графике, и они сталкиваются друг с другом.
Как я могу уменьшить количество тиков?
Например, у меня есть галочки:
1E-6, 1E-5, 1E-4, ... 1E6, 1E7
И я хочу только:
1E-5, 1E-3, ... 1E5, 1E7
Я пытался играть с LogLocator
, но я не смог понять это.
python
matplotlib
jlconlin
источник
источник
pyplot.locator_params(axis = 'x', nbins = 4)
(илиaxis = 'y'
) сделать процесс действительно простым. Спасибо @bgamari!numticks
вместоnbins
numticks
решение для логарифмических графиков, как указано @meduz?[0, 1, ..., 99]
а теперь они установленыnticks=10
, то новые разреженные метки будут размещены в десять раз дальше друг от друга вдоль оси, то есть теперь1
будут располагаться там9
,2
где19
были , где были ... и9
где99
были.Если кто-то все еще получает эту страницу в результатах поиска:
источник
Для того, чтобы решить вопрос о настройке и появления тиков см Tick Локаторы руководство на сайте Matplotlib
ax.xaxis.set_major_locator(plt.MaxNLocator(3))
Устанавливает общее количество тиков на оси х на 3 и равномерно распределяет его по оси.
Есть также хороший учебник об этом
источник
ax = df.plot()
pandas.DataFrame
) с индексом datetime [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:
источник
ax.set_yticks(np.linspace(int(ymin), int(ymax), N), 2)
Решение, которое дал @raphael, простое и довольно полезное.
Тем не менее, отображаемые метки тиков будут не значениями, взятыми из исходного распределения, а из индексов массива, возвращаемых
np.linspace(ymin, ymax, N)
.Для отображения значений N, равномерно распределенных по отношению к исходным меткам, используйте
set_yticklabels()
метод. Вот фрагмент для оси Y с целочисленными метками:источник
Когда используется логарифмическая шкала, число основных тиков можно исправить с помощью следующей команды
Значение, установленное для,
numticks
определяет количество отображаемых тиков оси.Кредиты на пост @ bgamari для введения
locator_params()
функции, ноnticks
параметр выдает ошибку при использовании масштаба журнала.источник