gpt4 book ai didi

python - 控制seaborn中的颜色顺序

转载 作者:行者123 更新时间:2023-12-03 19:48:44 26 4
gpt4 key购买 nike

当使用类似 sns.barplot(myrange, means, pallette='deep') 的东西时,我会得到一些颜色顺序。我看到的默认顺序是蓝色、绿色、红色、紫色、棕色、蓝绿色。如果我有 6 个条形,一切都很好,但是如果我想要 12 个条形,并且我希望前两个条形为蓝色,接下来的两个为绿色,接下来的两个为红色,等等,这样组的颜色相似呢? ?

我可以只通过 color=myColors 传递一个列表,但这似乎不接受像 #4C72B0 这样的 html 颜色,所以我不知道如何获得我正在寻找的确切色调。

最佳答案

首先,向seaborn 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()

enter image description here

如果您不想使用现有的调色板,您也可以使用自定义的十六进制颜色字符串列表来创建一个,
palette = sns.color_palette(["#4c72b0","#4c72b0","#55a868","#55a868","#c44e52","#c44e52"])

这将导致与上述相同的情节。

(请注意,默认情况下,seaborn 会降低颜色的饱和度。因此,条形的颜色与调色板中的颜色不完全相同;要更改此行为,需要在 barplot 调用中设置 saturation=1。)

关于python - 控制seaborn中的颜色顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48601175/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com