当色块数量超过颜色数量时,seaborn会忽略自定义调色板

时间:2019-01-20 19:20:04

标签: python matplotlib seaborn

我设置了一个仅包含黑色和灰色的调色板,如下所示。

import seaborn as sns
sns.set_palette(['#000000', '#ABABAB'])

如果我的地块中只有两个或更少的色块,则此方法很好。

sns.barplot([1, 2], [3, 4])

但是,当条形多于颜色时,seaborn会切换回默认调色板。

sns.barplot([1, 2, 3], [4, 5, 6]) 

我可以使seaborn遍历自定义调色板吗?在上述情况下,第一个条应为黑色,第二条应为灰色,第三个应为黑色。

我当前的解决方法是

sns.set_palette(['#000000', '#ABABAB']*1000)

但是我怀疑这是标准的方法。

1 个答案:

答案 0 :(得分:3)

根据官方文档,这非常简单。只需将n_colors设置为大于调色板中的颜色数即可。以下是相关信息(突出显示的粗体)。在这里,您可以将n_colors设置为一个较大的数字。大于2的情况将适用于您的情况。

  

n_colors:int,可选       调色板中的颜色数。如果None,则默认值取决于       有关如何指定palette的信息。命名调色板默认为6种颜色,       但抓取当前调色板或传入颜色列表将       除非指定,否则请勿更改颜色数量。 要求       颜色多于调色板中的颜色将导致其循环。

import seaborn as sns
sns.set_palette(['#000000', '#ABABAB'], n_colors=100)

sns.barplot([1, 2, 3], [4, 5, 6]) 

编辑:似乎n_colors所需要的补丁数量也要多于补丁数量(在这种情况下为条)。因此,如果调色板中有两种颜色且有4种色块,则n_colors也应大于两者(在这种情况下为> 4)。

enter image description here