python - Pandas 按类别散点图

标签 python pandas matplotlib scatter-plot

在过去的 30 分钟里,这一直困扰着我。我想做的是按类别散点图。我查看了文档,但无法在那里找到答案。我看了here ,但是当我在 iPython Notebook 中运行它时,我什么也没得到。

这是我的数据框:

time    cpu   wait    category 
8       1     0.5     a 
9       2     0.2     a
2       3     0.1     b
10      4     0.7     c
3       5     0.2     c
5       6     0.8     b

理想情况下,我想要一个散点图,在 x 轴上显示 CPU,在 y 轴上显示等待,并且图表上的每个点都按类别区分。例如,如果 a=red、b=blue 和 c=green,则点 (1, 0.5) 和 (2, 0.2) 应该是红色,(3, 0.1) 和 (6, 0.8) 应该是蓝色,等等.

我将如何使用 Pandas 执行此操作?还是matplotlib?以工作为准。

最佳答案

这基本上与@JoeCondron 的答案相同,但有两个衬里:

cmap = {'a': 'red', 'b': 'blue', 'c': 'yellow'}
df.plot(x='cpu', y='wait', kind='scatter', 
        colors=[cmap.get(c, 'black') for c in df.category])

如果没有为类别映射颜色,则默认为黑色。

编辑:

以上适用于 Pandas 0.14.1。对于 0.16.2,'colors' 需要更改为 'c':

df.plot(x='cpu', y='wait', kind='scatter', 
    c=[cmap.get(c, 'black') for c in df.category])

关于python - Pandas 按类别散点图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328526/

相关文章:

python - 检查函数参数类型是 Pythonic 吗?

python - Mongodb 默认在插入时使用当前时间戳

python - 按 pandas 数据框中的日期范围分组

pandas - 根据另一个数据框 python pandas 替换列值? (初学者)

python - shiboken 类型系统不继承类

python - Linregress 输出似乎不正确

pandas - 在 Pandas 数据框中选择具有最小值和最大值的行

python - Spyder 终端内的 3D matplotlib 图

python - 使用seaborn,如何将不同颜色的数据点添加到散点图或更改为最后一个数据点的颜色?

python - 结合 seaborn 在 matplotlib 中自动选择线条样式的最可靠方法