Я пытаюсь создать такой сюжет график в matplotlib
На основе фрейма данных pandas, построенного следующим образом:
2020-01-01 2020-01-02 2020-01-03 ...
X yellow red red ...
Y orange orange red ...
Z red yellow yellow ...
... ... ... ... ...
Я думал, что это можно сделать с помощью двухмерных гистограмм, но мне не повезло. Я видел, что pcolor
может быть той функцией, которую я ищу, но я не могу управлять ею для работы с моим фреймворком временной серии.
1 ответ
Вы можете строить с помощью seaborn
. Вам нужно заменить цвета на числа, так что у вас будет такой фрейм данных:
И вы можете использовать sns.heatmap
для построения:
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import seaborn as sns
data = {'date': pd.date_range("2020-01-01", "2020-01-31", freq="1D").strftime('%d %b'),
'a': np.random.randint(3, size=31), 'b': np.random.randint(3, size=31),
'c': np.random.randint(3, size=31), 'd': np.random.randint(3, size=31),
'e': np.random.randint(3, size=31), 'f': np.random.randint(3, size=31)}
df = pd.DataFrame.from_dict(data)
df = df.set_index('date')
df = df.transpose()
fig, ax = plt.subplots(figsize=[10,2])
ax = sns.heatmap(df, cmap=['yellow', 'orange', 'red'], cbar=False)
Если вы предпочитаете matplotlib
, вы можете использовать imshow
:
from matplotlib.colors import ListedColormap
fig, ax = plt.subplots(figsize=[10,2])
ax.set_xticks(np.arange(len(df.columns)))
ax.set_yticks(np.arange(len(df.index)))
ax.set_xticklabels(df.columns)
ax.set_yticklabels(df.index)
plt.setp(ax.get_xticklabels(), rotation=90)
ax.imshow(df, ListedColormap(['yellow', 'orange', 'red']))
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.