Как нанести равномерно распределенные значения на ось x при построении с использованием matplotlib - PullRequest
0 голосов
/ 23 мая 2019

У меня есть серия с более чем 100 000 строк, которые я хочу построить. У меня проблема с осью X моей фигуры. Поскольку моя ось х состоит из нескольких дат, вы ничего не увидите, если нанесете их все.

Как я могу выбрать отображение только 1 из каждого x на оси x?

Вот пример кода, который создает графику с уродливой осью X:

sr = pd.Series(np.array(range(15)))
sr.index = [ '2018-06-' + str(x).zfill(2) for x in range(1,16)]
Out : 
2018-06-01     0
2018-06-02     1
2018-06-03     2
2018-06-04     3
2018-06-05     4
2018-06-06     5
2018-06-07     6
2018-06-08     7
2018-06-09     8
2018-06-10     9
2018-06-11    10
2018-06-12    11
2018-06-13    12
2018-06-14    13
2018-06-15    14

fig = plt.plot(sr)
plt.xlabel('Date')
plt.ylabel('Sales')

1 Ответ

1 голос
/ 23 мая 2019

Используя xticks, вы можете добиться желаемого эффекта:

В вашем примере:

sr = pd.Series(np.array(range(15)))
sr.index = [ '2018-06-' + str(x).zfill(2) for x in range(1,16)]
fig = plt.plot(sr)
plt.xlabel('Date')
plt.xticks(sr.index[::4]) #Show one in every four dates
plt.ylabel('Sales')

Выход:

enter image description here

Также, если вы хотите установить количество тиков, вместо этого вы можете использовать locator_params:

sr.plot(xticks=sr.reset_index().index)
plt.locator_params(axis='x', nbins=5) #Show five dates
plt.ylabel('Sales')
plt.xlabel('Date')

Выход:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...