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

How to specify colors for individual points in a scatter plot using Pandas

我的问题如下。

我有一个 pandas DataFrame,其中第一行包含 "sample" 的数据,其他所有行包含 "controls" 的数据。 我想要一个散点图(或任何其他类型的图来概括问题),其中所有 "controls" 都是一种颜色,而 "sample" 是另一种颜色。怎么做?我查看了 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')

有什么建议吗?

您正在从 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')