我有一個要分組的資料框,然后根據 value_counts 繪制(條形圖)。
import pandas as pd
df = pd.DataFrame({'date': ['jan', 'jan', 'jan', 'jan', 'feb', 'feb', 'feb', 'feb'],
'value': ['low', 'low', 'high', 'medium', 'medium', 'high', 'high', 'medium']})
print(df)
我想在 X 軸上有月份(在這種情況下只有jan和feb),在 Y 軸上有每個月的值條。條形的高度應取決于特定類別的數量。例如,對于“一月”,低=2,高=1,中=1
我努力了:
sns.countplot(x = 'date', hue = 'value', data = df.melt())
但這是我的錯誤:
ValueError: Could not interpret input 'date'
這可以通過matplotlib或seaborn
uj5u.com熱心網友回復:
您可以使用sns.countplot來計算原始資料框中的專案。你可以用它hue=來分離value列。order=可以固定 x 值的順序。同樣,hue_order=可以為色相類別設定順序。(默認情況下,使用資料框中的出現順序。)palette=其中可以是字典,用于將特定顏色分配給特定類別。
import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
df = pd.DataFrame({'date': ['jan', 'jan', 'jan', 'jan', 'feb', 'feb', 'feb', 'feb'],
'value': ['low', 'low', 'high', 'medium', 'medium', 'high', 'high', 'medium']})
sns.set()
ax = sns.countplot(data=df, x='date', hue='value',
# order=['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'],
order=['jan', 'feb'], hue_order=['low', 'medium', 'high'],
palette={'low': 'limegreen', 'medium': 'gold', 'high': 'crimson'})
ax.set_xlabel('') # optionally remove 'date' label, as it is clear from the ticklabels
plt.tight_layout()
plt.show()

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/424621.html
標籤:Python 熊猫 matplotlib 海运
