2016-07-11 21 views
0

比方說,我用散點圖如何切換seaborn中兩個類別的顏色?

import pandas as pd 
import seaborn as sns 
sns.set(style="whitegrid", palette="muted") 

# Load the example iris dataset 
iris = sns.load_dataset("iris") 

# "Melt" the dataset to "long-form" or "tidy" representation 
iris = pd.melt(iris, "species", var_name="measurement") 

# Draw a categorical scatterplot to show each observation 
sns.swarmplot(x="measurement", y="value", hue="species", data=iris) 

其輸出以下情節以下「光圈」例如:

enter image description here

但是,讓我們說,我想切換setosa和雜色的顏色,明確使用seaborn調色板製作setosa green和versicolor blue。我會嘗試這樣的事:

sns.set(style="whitegrid", palette="muted") 
iris = sns.load_dataset("iris") 
iris = pd.melt(iris, "species", var_name="measurement") 
sns.swarmplot(x="measurement", y="value", hue="species", data=iris, palette=dict(setosa = 'g', versicolor = 'b', virginica = 'r')) 

當然,這並不工作:

enter image description here

調色板現已關閉。

(1)如何切換兩個類別保留seaborn的調色板?

(2)您想要選擇另一種seaborn「標準」顏色,如青色?我怎樣才能將Setosa從藍色切換到青色?

+0

我有點您的問題感到困惑,因爲它看起來像您已切換兩種類別的顏色。 – mwaskom

+0

@Virginica是一樣的。我將採取原始和seaborn的原始調色板切換「setosa」和「雜色」。 – ShanZhengYang

回答

2

Seaborn是開源: 的hexcodes這裏列出: https://github.com/mwaskom/seaborn/blob/master/seaborn/palettes.py

SEABORN_PALETTES = dict(
    deep=["#4C72B0", "#55A868", "#C44E52", 
      "#8172B2", "#CCB974", "#64B5CD"], 
    muted=["#4878CF", "#6ACC65", "#D65F5F", 
      "#B47CC7", "#C4AD66", "#77BEDB"], 
    pastel=["#92C6FF", "#97F0AA", "#FF9F9A", 
      "#D0BBFF", "#FFFEA3", "#B0E0E6"], 
    bright=["#003FFF", "#03ED3A", "#E8000B", 
      "#8A2BE2", "#FFC400", "#00D7FF"], 
    dark=["#001C7F", "#017517", "#8C0900", 
      "#7600A1", "#B8860B", "#006374"], 
    colorblind=["#0072B2", "#009E73", "#D55E00", 
       "#CC79A7", "#F0E442", "#56B4E9"] 
    ) 


sns.set(style="whitegrid", palette="muted") 
iris  = sns.load_dataset("iris") 
iris  = pd.melt(iris, "species", var_name="measurement") 
muted = ["#4878CF", "#6ACC65", "#D65F5F", "#B47CC7", "#C4AD66", "#77BEDB"] 
newPal = dict(setosa = muted[0], versicolor = muted[2], virginica = muted[1]) 
sns.swarmplot(x="measurement", y="value", hue="species", data=iris,palette=newPal) 

enter image description here

+0

這不是我投票下來的答案。我認爲這是正確的。 – ShanZhengYang

+0

雖然,你可以輸出的情節和粘貼上面?這肯定會改善這個職位。謝謝! – ShanZhengYang

+0

在代碼中,你正在切換雜色和viriginia,但沒關係。 – ShanZhengYang