Python 大熊猫分类散点图

Python 大熊猫分类散点图,python,pandas,matplotlib,scatter-plot,Python,Pandas,Matplotlib,Scatter Plot,在过去的30分钟里,这一直困扰着我。我想做的是按类别散点绘图。我看了一下文档,但还没有找到答案。我看了看,但当我在iPython笔记本上运行时,我什么也没得到 这是我的数据框: 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

在过去的30分钟里,这一直困扰着我。我想做的是按类别散点绘图。我看了一下文档,但还没有找到答案。我看了看,但当我在iPython笔记本上运行时,我什么也没得到

这是我的数据框:

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=红色,b=蓝色,c=绿色,那么点(1,0.5)和(2,0.2)应该是红色,(3,0.1)和(6,0.8)应该是蓝色,等等

我该如何处理熊猫呢?还是matplotlib?不管谁做这项工作

你可以这样做

color_map = {'a': 'r', 'b': 'b', 'c': 'y'}
ax = plt.subplot()
x, y = df.cpu, df.wait
colors = df.category.map(color_map)
ax.scatter(x, y, color=colors)
这将为您提供a类的红色,b类的蓝色,c类的黄色。 因此,可以通过与数组长度相同的颜色别名列表。 您可以在此处查看各种可用颜色:。
我不认为绘图方法对散点图很有用

我会根据类别创建一个包含颜色的列,然后执行以下操作,其中ax是matplotlib ax,df是数据帧:

ax.scatter(df['cpu'], df['wait'], marker = '.', c = df['colors'], s = 100)

这与@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])
如果没有为类别映射颜色,则默认为黑色

编辑:

以上内容适用于熊猫0.14.1。对于0.16.2,“颜色”需要更改为“c”:

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

所以下次我不必求助于这样,我的问题能通过文档解决吗?或者这只是常识?我不会说常识。matplotlib文档不是很好,但它们有很多示例。但是,您必须下载代码才能读取它。我想我是通过反复试验才学会的。掌握matplotlib的API(不是说我有)很困难。顺便说一下,你可以通过一个比点数短的颜色数组,它只会循环通过它们。此外,散射方法还有一个参数
s
,用于控制点的大小。这可以是单个数字或数字数组,它以与我得到的颜色相同的方式循环它们:AttributeError:Unknown property Color,我是否缺少一个库?这就是我现在拥有的:导入熊猫作为pd导入numpy作为np导入matplotlib导入matplotlib.pyplot作为plt导入表格作为tb%matplotlib InLine对不起,不知道如何显示绘图吗?我在做ax.show(),却什么也得不到。这行ax.scatter(x,y,color=colors)只是给了我,我正在使用iPython笔记本我尝试了这个,但是我得到了ValueError:to_rgba:Invalid rgba arg“0 255在熊猫0.14.1上对我有效。您使用的是哪个版本?此外,如果类别未映射,我将修改为允许使用默认颜色。我知道这是另一个问题,但您知道如何添加图例吗?我正要离开,因此没有时间解释。希望这能让你开始。