2014-06-19 50 views
5

我正在使用matplotlib來製作一個DF的散點圖。爲了獲得每個數據設置不同的顏色,我正在做兩個獨立的呼叫plt.scatter:有沒有辦法根據不同列中的離散變量製作matplotlib散點圖標記或顏色?

plt.scatter(zzz['HFmV'], zzz['LFmV'], label = dut_groups[0], color = 'r') 
plt.scatter(qqq['HFmV'], qqq['LFmV'], label = dut_groups[1], color = 'b') 
plt.legend() 
plt.show() 

這給了我想要的顏色依賴,但真的會有什麼理想的是,如果我可以直接去找熊貓給我散點圖與同積幾個數據集由像

df.plot(KIND =散射(X,Y,顏色= df.Group,標記= df.Head)

顯然有沒有這樣的動物(至少我能找到)所以,我腦海中最好的事情是將plt.scatter調用放到一個循環中,以便使顏色或標記變化根據其中一行(不是x或y,而是其他行)。如果我想使用的行是一個連續變量,它看起來像我可以使用色彩映射,但在我的情況下,我需要爲此起訴的行是一個字符串(變量的分類類型,而不是數字)。

任何幫助非常感謝。

回答

10

你在做什麼幾乎可以工作,但你必須通過color一個顏色矢量,而不僅僅是一個變量向量。所以,你可以這樣做:

color = df.Group.map({dut_groups[0]: "r", dut_groups[1]: "b"}) 
plt.scatter(x, y, color=color) 

也是一樣的標記樣式

你也可以使用seaborn做色彩映射你希望(如討論here)的方式,雖然它沒有做標記風格映射:

import seaborn as sns 
import pandas as pd 
from numpy.random import randn 

data = pd.DataFrame(dict(x=randn(40), y=randn(40), g=["a", "b"] * 20)) 
sns.lmplot("x", "y", hue="g", data=data, fit_reg=False) 

enter image description here

相關問題