如何使用Pandas为散点图中的各个点指定颜色

时间:2015-01-28 12:09:57

标签: python pandas colors scatter-plot

我的问题如下。

我有一个pandas DataFrame,它包含第一行中“sample”的数据和所有其他行上“controls”的数据。 我想有一个散点图(或任何其他类型的图来概括问题),其中所有“控件”都是一种颜色,而“样本”是另一种颜色。怎么做?我查看过pandas文档但我找不到任何东西。

这是我现在所拥有的

from pandas import *
from collections import OrderedDict

mydict = OrderedDict([
                    ('sample', [454, 481, 160, 26, 17]),
                    ('ctrl_1', [454, 470, 101, 10, 8]),
                    ('ctrl_2', [454, 473, 110, 15, 9]),
                    ('ctrl_3', [454, 472, 104, 19, 13]),
                    ('ctrl_4', [454, 472, 105, 16, 13]),
                    ('ctrl_5', [454, 466, 97, 15, 10]),
                    ('ctrl_6', [454, 473, 110, 17, 10]),
                    ('ctrl_7', [454, 465, 99, 15, 11]),
                    ('ctrl_8', [454, 471, 107, 18, 12]),
                    ('ctrl_9', [454, 471, 102, 15, 11]),
                    ('ctrl_10', [454, 472, 116, 14, 9])
                    ])

df = DataFrame.from_dict(mydict,orient='index')
df.columns=['A','B','C','D','E']

df.plot(kind='scatter',x='C',y='E',figsize=(10,10), color='blue')

我尝试将DataFrame拆分为两个(控件和示例)并在另一个上面绘制一个,但是当您尝试散点图一个点时,pandas引发错误(TypeError:没有行属性“y”)这是一个错误吗?)。

sample = df.ix[0]
controls = df.ix[1:]
controls.plot(kind='scatter',x='C',y='E',figsize=(10,10), color='blue')
sample.plot(kind='scatter',x='C',y='E',figsize=(10,10), color='red')

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

你从df.ix[0]获得了一个系列,can't be drawn as a scatter plot。 (我想它在理论上可能是一种有效的类型,但正如你所说,它只会显示1点。)

如果您稍微更改代码以使sample成为DataFrame,则可以正常运行。 (我也使用相同的轴将它们放在同一个图上。)

sample = df.ix[:1]
controls = df.ix[1:]
ax = controls.plot(kind='scatter',x='C',y='E',figsize=(10,10), color='blue')
sample.plot(ax=ax, kind='scatter',x='C',y='E',figsize=(10,10), color='red')