2016-04-17 197 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] 

或在大熊貓一些等價的。