Python Matplotlib: как уменьшить количество отметок x для нечисловых c tyoe - PullRequest
0 голосов
/ 04 марта 2020

У меня есть очень простой pandas фрейм данных здесь, и я пытаюсь построить индексный столбец (Дата, которая отформатирована как строка) против 'Adj Close' столбца,

            Adj Close
      Date                  
2010-01-01  1.438994
2010-01-04  1.442398
2010-01-05  1.436596
2010-01-06  1.440403
2010-01-07  1.431803
... a lot more rows

Вот мой очень простой код:

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(df['Adj Close'], label='Close Price History')
fig.autofmt_xdate()

однако график неприятен в том смысле, что слишком много перекрывающихся тиков x. enter image description here

Я опробовал решение здесь , используя код

ax.locator_params(axis='x',nbins=10)

Я думал, что это даст мне 11 тиков с 10 равный интервал между ними. Однако я получил сообщение об ошибке:

/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:4: UserWarning: 'set_params()' not defined for locator of type <class 'matplotlib.category.StrCategoryLocator'> after removing the cwd from sys.path.

Понятия не имею, что означает ошибка, возможно, это потому, что моя ось x находится в строковом формате (не нумеруется c)? Просто чтобы подчеркнуть, я действительно ищу простое решение для решения этой проблемы, не заинтересованный в форматировании столбца в качестве даты и go, хотя все трудности в манипулировании датами. Если предположить, что мои x-тики являются строками, и нет никакого способа применить к ним числовые вычисления c, возможно ли просто уменьшить частоту показанных x-тиков, чтобы получить более визуально привлекательный сюжет?

1 Ответ

0 голосов
/ 04 марта 2020

Вы можете сэмплировать свои тики и установить список в качестве новых тиков.

# current x labels
current_ticks = ax.get_xticklabels()
# resampling every other label, change mod(2) to sample less
custom_ticks = [a.get_text() for a in current_ticks if current_ticks.index(a)%2] 
# set as new labels
ax.set_xticks(custom_ticks)
ax.set_xticklabels(custom_ticks)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...