Seaborn Barplot и даты форматирования по оси X - PullRequest
0 голосов
/ 17 июня 2019

В настоящее время я работаю над визуализацией наборов данных с Seaborn и Pandas.У меня есть некоторые зависящие от времени данные, которые я хотел бы отобразить в гистограммах.

Однако я борюсь с двумя проблемами в Seaborn:

  1. Форматирование дат на оси X
  2. Показывает только несколько дат (поскольку не имеет смысла отмечать каждый день на 6-месячном графике)

Я нашел решение своих проблем в обычном режиме.Matplotlib, то есть:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

dates = pandas.date_range('1/1/2014', periods=20, freq='m')
df = pandas.DataFrame(
    data={'dt':dates, 'val':numpy.random.randn(N)}
)

fig, ax = plt.subplots(figsize=(10, 6))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
ax.bar(df['dt'], df['val'], width=25, align='center')

Тем не менее, у меня уже есть большинство моих графиков, сделанных в Сиборне, и я хотел бы остаться последовательным.Как только я преобразую предыдущий код в Seaborn, я теряю возможность форматировать даты:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.dates as mdates

dates = pandas.date_range('1/1/2014', periods=20, freq='m')
df = pandas.DataFrame(
    data={'dt':dates, 'val':numpy.random.randn(N)}
)

fig, ax = plt.subplots(1,1)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%y-%m'))
sns.barplot(x='dt', y='val', data=df)
fig.autofmt_xdate()

Когда я запускаю код, формат даты остается неизменным, и я не могу найти какие-либо даты с DateLocator.

Можно ли как-нибудь отформатировать мою ось X для дат в Seaborn способом, аналогичным Matplotlib с DateLocator и DateFormatter?

Заранее спасибо.

1 Ответ

0 голосов
/ 17 июня 2019

Нет, вы не можете использовать seaborn.barplot в сочетании с отметкой matplotlib.dates. Причина в том, что тики для морских барботов находятся в целочисленных позициях (0,1, ..., N-1). Поэтому их нельзя интерпретировать как даты.

У вас есть два варианта:

  1. Используйте seaborn, перебирайте метки и устанавливайте на них все, что вы хотите
  2. Не используйте морского происхождения и имеют преимущества (и недостатки) matplotlib.dates доступных тикеров.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...