Python 熊猫散点图不按列值着色

Python 熊猫散点图不按列值着色,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个简单的数据框,如下所示。我想在y轴上创建一个值散点图,在x轴上创建一个日期散点图,并按类别为点上色。然而,给这些点上色是行不通的 # Create dataframe df = pd.DataFrame({ 'date': ['2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01'], 'category': ['Wholesale', 'Wholesale', '

我有一个简单的数据框,如下所示。我想在y轴上创建一个
散点图,在x轴上创建一个
日期
散点图,并按
类别
为点上色。然而,给这些点上色是行不通的

# Create dataframe
df = pd.DataFrame({
    'date': ['2016-01-01', '2016-02-01', '2016-03-01', '2016-01-01', '2016-02-01', '2016-03-01'],
    'category': ['Wholesale', 'Wholesale', 'Wholesale', 'Retail', 'Retail', 'Retail'],
    'value': [50, 60, 65, 55, 62, 70]
})
df['date'] = pd.to_datetime(df['date'])

# Try to plot
df.plot.scatter(x='date', y='value', c='category')

ValueError: 'c' argument must be a mpl color, a sequence of mpl colors or a sequence of numbers, not ['Wholesale' 'Wholesale' 'Wholesale' 'Retail' 'Retail' 'Retail'].

为什么我会出错?熊猫散点图表示,参数
c
可以是“一个列名或位置,其值将用于根据颜色映射为标记点着色。”

我想您正在查看
seaborn

import seaborn as sns
sns.scatterplot(data=df, x='date', y='value', hue='category')
输出:

或者您可以通过
df.groupby

fig, ax = plt.subplots()
for cat, d in df.groupby('category'):
    ax.scatter(x=d['date'],y=d['value'], label=cat)
输出:

df.plot.scatter(x='date', y='value', c=df['category'].map({'Wholesale':'red','Retail':'blue'}))