Как увеличить частоту xticks / labels для дат на графике?
Я пытаюсь увеличить частоту ярлыков и ярлыков дат на барплоте. В настоящее время он помещает ярлыки на каждый второй месяц, и я хотел бы увеличить его до каждого месяца.
Код, который у меня есть до сих пор:
fig = plt.figure() ax = plt.subplot(1,1,1) # defining the spacing around the plots plt.subplots_adjust(left = 0.125, bottom = 0.1, right = 0.9, top = 0.9, wspace = 0.2, hspace = 0.35) handles = [] # for bar plot bar1 = ax.bar(dates, clim[loc,:], label = 'climatology (1981 - 2013)', color='darkgray', width=width_arr[:], linewidth=0, alpha=0.5) handles.append(bar1) bar2 = ax.bar(dates, chirps[i,loc,:], label = str(year1), color = 'blue', width=width_arr[:], linewidth=0, alpha=0.45) handles.append(bar2) # setting the plot tick labels for tick in ax.xaxis.get_major_ticks(): tick.label.set_fontsize(10) for tick in ax.yaxis.get_major_ticks(): tick.label.set_fontsize(10) ax.set_ylabel("Precipitation", fontsize=10) # plotting the legend within the plot space plt.legend( loc = 'upper left', numpoints=1, ncol = 3, prop={'size':10}) plt.ylim(0, 110) # rotating the tick marks to make best use of the x-axis space plt.xticks(rotation = '25')
- Настройка цвета разных баров в matplotlib Python
- Создание штрих-диаграмм в Python
- Участок Боке с номинальным или порядковым осям
- Как я могу использовать xaxis_date () с barh ()?
- графическая диаграмма matplotlib с датами
Вы можете указать xtick loactions в команде xticks
. Поэтому в вашем случае это должно сделать трюк: вместо
plt.xticks(rotation = '25')
использование
plt.xticks(dates,rotation = '25')
Вот минимальный рабочий пример , иллюстрирующий ваш вопрос и исправление.
import numpy as np import matplotlib.pyplot as plt # generate random data x = [1.0, 2.0, 3.0, 4.0, 5.0] y = np.random.rand(2,5) # setup the plot fig = plt.figure() ax = plt.subplot(1,1,1) # plot the data, only the bar command is important: bar1 = ax.bar(x, y[0,:], color='darkgray', width=0.5, linewidth=0, alpha=0.5) bar2 = ax.bar(x, y[1,:], color = 'blue', width=0.5, linewidth=0, alpha=0.45) # defining the xticks plt.xticks(rotation = '25') #plt.xticks(x,rotation = '25') plt.show()
Это приведет к следующему рисунку:
На этом рисунке мы видим гораздо больше ярлыков, чем мы надеялись, – что противоположно тому, что у вас было, однако один и тот же ответ.
Теперь, если вы измените команду plt.xticks
(в приведенном выше примере вы можете прокомментировать одну строку и раскомментировать другую), эта цифра изменится на:
Тот факт, что y-данные изменились (из-за вызова np.random
имеет значения. Однако вы можете видеть, что теперь у нас есть только x-тики в местах, указанных в x
.
Если вы хотите пропустить определенные метки, я рекомендую использовать функцию arange
numpy . arange
, в отличие от linspace
, допускает фиксированное приращение (третий входной аргумент). Вы можете заменить plt.xticks(x,rotation='25')
кодом:
# defining the xticks names = ['one', 'two', 'three', 'four', 'five'] x_tick_location = np.arange(np.min(x),np.max(x)+0.001,2.0) x_tick_labels = [names[x.index(xi)] for xi in x_tick_location] plt.xticks(x_tick_location,x_tick_labels,rotation = '25')
Это даст вам следующий сюжет:
Есть несколько вещей, которые стоит отметить:
- Я ввел
names
списков, которые содержат строки, которые будут использоваться в качестве тиковых меток. Я настоятельно рекомендую не устанавливать ярлыки, как это, потому что он отделяет ваши метки от ваших данных. Здесь это помогает проиллюстрировать работуxticks
. - Расположение
np.arange
определяется с использованиемnp.arange
как указано выше. Междуmin
иmax
значениямиx
мы увеличиваем на2
в этом примере. Это может помочь добавить небольшую сумму кmax
значению, чтобы гарантировать, что это можно считать (это связано с арифметикой с плавающей запятой). - Эта команда
[names[x.index(xi)] for xi in x_tick_location]
создает список, беря каждый элемент изx_tick_location
, находя его индекс в исходномx
и используя этот индекс для выбора соответствующего элемента вnames
. - Наконец, вы передаете как метки, так и метки меток в команду
xticks
.
- Матричные латексные макросы в reStructuredText и Sphinx
- matplotlib: точки данных, связанные в неправильном порядке в линейном графике
- Как объединить несколько гистограмм в боке?
- Как закодировать гистограммы с шаблонами вместе с цветами в Python?
- как сделать 3D-эффект на барах в matplotlib?
- Манипулирование метками x оси в matplotlib
- Matplotlib, горизонтальная гистограмма (barh) перевернута
- Barchart с вертикальными метками в python / matplotlib
- Индивидуально обозначенные столбцы для гистограммы в Plotly
- как изменить порядок участка фактора в морском
- Графическая диаграмма -цветы python