Цветные точки Stripplot в зависимости от даты - PullRequest
0 голосов
/ 07 августа 2020
• 1000 значение альфа) сравнил точки данных за предыдущие даты.

это то, что у меня есть прямо сейчас, все, что мне нужно, это затенять точки на основе даты для каждого сегмента. но я не могу понять это

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib as mlp
plt.style.use("ggplot")

data = pd.DataFrame({"Date":pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON"),
                  "A":[np.random.randint(-5, 50) for _ in range(len(pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON")))],
                  "B":[np.random.randint(-5, 50) for _ in range(len(pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON")))],
                  "C":[np.random.randint(-10, 50) for _ in range(len(pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON")))],
                  "D":[np.random.randint(9, 50) for _ in range(len(pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON")))]})
data.set_index("Date", inplace=True)
data.head()
sns.catplot(data=data, aspect=15/6, height=6)

Это результат приведенного выше кода введите описание изображения здесь

1 Ответ

1 голос
/ 07 августа 2020

Диаграмма рассеяния со случайным смещением по оси x может использоваться для применения одной цветовой карты для каждого столбца.

Чтобы проиллюстрировать эффект, в приведенном ниже примере используются случайные данные, причем самые последние значения являются наибольшими.

import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

plt.style.use("ggplot")
dates = pd.date_range(start="2020-01-06", end="2020-08-10", freq="W-MON")
N = len(dates)
data = pd.DataFrame({"Date": dates,
                     "A": 30 + np.random.uniform(-5, 8, N).cumsum(),
                     "B": 20 + np.random.uniform(-4, 9, N).cumsum(),
                     "C": 25 + np.random.uniform(-4, 7, N).cumsum(),
                     "D": 40 + np.random.uniform(-2, 8, N).cumsum()})
data.set_index("Date", inplace=True)
columns = data.columns
for col_id, (column, cmap) in enumerate(zip(columns, ['Reds', 'Blues', 'Greens', 'Purples'])):
    plt.scatter(col_id + np.random.uniform(-0.2, 0.2, N), data[column], c=range(N), cmap=cmap)
plt.xticks(range(len(columns)), columns)
plt.show()

пример сюжета

...