簡體   English   中英

控制Seaborn的顏色順序

[英]Controlling color order in seaborn

當使用諸如sns.barplot(myrange, means, pallette='deep')我得到了一些顏色順序。 我默認看到的順序是藍色,綠色,紅色,紫色,棕色,藍綠色。 如果我有6個小節,那么一切都很好,但是如果我想要12個小節,並且我希望前兩個小節為藍色,接下來的兩個小節為綠色,接下來的兩個小節為紅色,依此類推,以使組的顏色相似?

我只可以傳遞帶有color=myColors的列表,但這似乎不接受像#4C72B0這樣的html顏色,因此我不知道如何獲得我想要的確切色彩。

首先,將十六進制顏色字符串提供給seabar barplot的color參數沒有問題,例如

sns.barplot("A", "B", data=df, color="#4C72B0")

工作正常。 但是它將所有條形圖都用相同的顏色着色。

因此,您將要使用調色板。 如果要使用現有調色板的顏色,從確切的調色板開始並重復所需的次數可能會很有用。

col = np.repeat(np.array(sns.color_palette("deep")),2,axis=0)
sns.barplot(..., palette=col)

在這里,我們重復兩次。 完整的例子:

import numpy as np
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

palette = np.repeat(np.array(sns.color_palette("deep")),2,axis=0)
n = 6
df = pd.DataFrame({"A":np.arange(n),
                   "B":np.random.rand(n)})
sns.barplot("A", "B", data=df, palette=palette)
plt.show()

在此處輸入圖片說明

如果您不想使用現有的調色板,則還可以使用自定義的十六進制顏色列表來創建一個調色板,

palette = sns.color_palette(["#4c72b0","#4c72b0","#55a868","#55a868","#c44e52","#c44e52"])

這將導致與上述相同的繪圖。

(請注意,默認情況下,seaborn會對顏色進行去飽和。因此,條形的顏色與調色板中的顏色並不完全相同;要更改此行為,需要在條形圖調用中將saturation=1設置saturation=1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM