Построение временных рядов Seaborn: разные задачи для каждой функции - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь использовать функциональность seaborn dataframe (например, передавая имена столбцов в параметры x, y и hue) для своих временных рядов (в формате даты-время панд).

  • x должно исходить из столбца временных рядов (преобразовывается из pd.Series из строк с pd.to_datetime)
  • y должно поступать из плавающего столбца
  • hue приходитиз категориального столбца, который я вычислил.

В одной и той же серии есть несколько потоков, которые я пытаюсь разделить (и использую оттенок для разделения их визуально), и поэтому они не должны быть связанылиния (как на диаграмме рассеяния)

Я пробовал следующие типы графиков, каждый из которых имеет свою проблему:

  • sns.scatterplot: правильно отображает график иу меток правой шины есть проблемы с xlimits, и я не могу установить их правильно с помощью plt.xlim (), используя data.Dates.min и data.Dates.min

  • sns.lineplot:получает пределы и метки правильно, но я сНе удалось найти параметр для отключения линий между отдельными точками данных, как в matplotlib.Я попытался установить параметры markers и dashes, но безрезультатно.

  • sns.stripplot: моя последняя попытка правильно нарисовала точки данных и получила правильные значения xlimits, но испортиламетки метки

Пример входных данных для простого воспроизведения:

dates = pd.to_datetime(('2017-11-15',
    '2017-11-29',
    '2017-12-15',
    '2017-12-28',
    '2018-01-15',
    '2018-01-30',
    '2018-02-15',
    '2018-02-27',
    '2018-03-15',
    '2018-03-27',
    '2018-04-13',
    '2018-04-27',
    '2018-05-15',
    '2018-05-28',
    '2018-06-15',
    '2018-06-28',
    '2018-07-13',
    '2018-07-27'))
values = np.random.randn(len(dates))
clusters = np.random.randint(1, size=len(dates))
D = {'Dates': dates, 'Values': values, 'Clusters': clusters}
data = pd.DataFrame(D)

Каждой из функций я передаю одинаковые аргументы:

sns.OneOfThePlottingFunctions(x='Dates',
                     y='Values',
                     hue='Clusters',
                     data=data)
plt.show()

Итак, чтобы напомнить, что я хочу, это график, который использует функциональность Seaborn pandas, и наносит точки (не линии) с правильными пределами x и читаемыми метками x:)

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 10 мая 2019
ax = sns.scatterplot(x='Dates', y='Values', hue='Clusters', data=data)
ax.set_xlim(data['Dates'].min(), data['Dates'].max())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...