Python 熊猫散点图不按列值着色
我有一个简单的数据框,如下所示。我想在y轴上创建一个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', '
值
散点图,在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'}))