2016-04-17 190 views
1

鉴于以下数据帧:Matplotlib散点图颜色一个点

import pandas as pd 
df = pd.DataFrame({'X':[1,2,3], 
        'Y':[4,5,6], 
        'Site':['foo','bar','baz'] 
        }) 
df 

    Site X Y 
0 foo  1 4 
1 bar  2 5 
2 baz  3 6 

我想通过在数据帧中的行进行迭代,以产生3个散点图(在这种情况下,虽然对n行的一般解决方案是需要):

一中的“富”的点为红色,其余为蓝色,

另一个中的“酒吧”的点为红色,其余为蓝色,

和第三个,其中“baz”的点是红色的,其余的是蓝色的。

下面是一个示例为 “foo” 的手工完成:

import matplotlib.pyplot as plt 
%matplotlib inline 
color=['r','b','b'] 
x=df['X'] 
y=df['Y'] 
plt.scatter(x, y, c=color, alpha=1,s=234) 
plt.show() 

提前感谢!

回答

1

你有两个选择:

  1. 的数据创建两个“意见”,一个与将要红色的元素,和其他与剩余的元素。例如,您将对此应用条件切片。然后,你绘制一套红色,另一套蓝色。这将是两个scatter命令在相同figure。重复每组。

  2. 很方便,默认jet colormap在极端情况下是蓝色和红色。然后,您可以只对所有数据调用scatter一次,但将scatter的参数scatter设置为通过条件分片从原始数据获取的布尔数组。这将使所需项目的颜色映射为“1”,而其他错误项目将为“0”,并相应地进行颜色映射。

注:当我谈条件切片,其状如:

interesting_items = array[array == interesting_value] 

或在大熊猫一些等价的。