从pandas DataFrame绘制数据,依赖于列的点的颜色

时间:2018-04-06 01:50:47

标签: python pandas matplotlib data-visualization

我有一个包含3列的pandas DataFrame,如下所示。

col1 value flag 1 0 0 2 0.03915 0 3 0.13 1

我想从这个数据框创建一个散点图,其中col1是x轴而value是y轴,而我努力做的部分是,对于那些行有flag=0我希望这个点的颜色是蓝色,同样如果flag=1我想要将红色点。

是否有一个简单的方法是检查每行的标志列并相应地为该点着色?

3 个答案:

答案 0 :(得分:1)

您可以使用内置的df.plot.scatter()函数并将flag列传递给color参数:

import pandas as pd

idx = [1,2,3]
value = [0., 0.03, 0.13]
flag = [0, 0, 1]

df = pd.DataFrame(dict(idx=idx, value=value, flag=flag))

df.plot.scatter('idx', 'value', c='flag', cmap='RdBu_r')

enter image description here

答案 1 :(得分:1)

您可以将矢量传递到散点图,如下所示

import matplotlib.pyplot as plt

df = pd.DataFrame(data = {'value':[0, 0.4, 0.13], 'flag':[0,0,1]})
plt.scatter(df['value'], df.index, c=df['flag'])

enter image description here

答案 2 :(得分:1)

假设包含给定数据的数据帧是df,这就是您想要的。 您可以根据条件flag列及其值创建颜色列表。将颜色列表提供给内置color函数中的DataFrame.plot.scatter参数。 (您可以找到文档here。)

colors = ['r' if flag==1 else 'b' for flag in df.flag]
df.plot.scatter('col1', 'value', color=colors)

enter image description here

希望这会有所帮助。