I have this data frame diamonds
which is composed of variables like (carat, price, color)
, and I want to draw a scatter plot of price
to carat
对于每个 color
,这意味着不同的 color
在图中具有不同的颜色。
这在 R
和 ggplot
中很容易:
ggplot(aes(x=carat, y=price, color=color), #by setting color=color, ggplot automatically draw in different colors
data=diamonds) + geom_point(stat='summary', fun.y=median)
我想知道如何使用 matplotlib
在 Python 中完成此操作?
附言:
我知道辅助绘图包,例如 seaborn
和 ggplot for python
,我不喜欢它们,只是想知道是否可以使用 matplotlib
单独,;P
原文由 avocado 发布,翻译遵循 CC BY-SA 4.0 许可协议
导入和示例 DataFrame
随着
matplotlib
您可以传递
plt.scatter
一个c
参数,它允许您选择颜色。以下代码定义了一个colors
字典,用于将菱形颜色映射到绘图颜色。df['color'].map(colors)
有效地将颜色从“菱形”映射到“绘图”。(请原谅我没有放另一个示例图像,我认为 2 就足够了:P)
随着
seaborn
您可以使用
seaborn
它是matplotlib
的包装器,默认情况下它看起来更漂亮(我知道,而是基于意见:P),但也添加了一些绘图功能。为此,您可以使用
seaborn.lmplot
和fit_reg=False
(这可以防止它自动进行一些回归)。sns.scatterplot(x='carat', y='price', data=df, hue='color', ec=None)
也做同样的事情。选择
hue='color'
告诉 seaborn 根据'color'
列中的唯一值拆分和绘制数据。随着
pandas.DataFrame.groupby
&pandas.DataFrame.plot
如果您不想使用 seaborn,请使用
pandas.groupby
单独获取颜色,然后仅使用 matplotlib 绘制它们,但您必须边走边手动分配颜色,我添加了一个下面的例子:此代码假定与上面相同的 DataFrame,然后根据
color
对其进行分组。然后它遍历这些组,为每个组绘图。为了选择一种颜色,我创建了一个colors
字典,它可以将钻石颜色(例如D
)映射到真实颜色(例如tab:blue
).