Altair:当类别多于可用颜色时如何着色

Altair: How to color when there are more categories than colors available

这是取自 Altair documentation 配色方案的代码。

alt.Chart(iris).mark_point().encode(
    x='petalWidth',
    y='petalLength',
    color=alt.Color('species', scale=alt.Scale(scheme='dark2'))
)

这里,为了根据物种上色,他们使用了dark2配色方案。 dark2 vega方案有8种颜色。我注意到,当可用的类别多于可用颜色时,似乎颜色又被回收了,这意味着某些类别具有相同的颜色。在此示例中,假设 species 有 8 个以上的类别。这意味着两个物种将以相同的方式着色。

Altair 是否可以自动 'extend' dark2 配色方案以支持更多类别?我在考虑方案中的插值或混合颜色。

附带说明一下,我知道还有其他配色方案可以提供更多颜色,但我想要一个我在上面提到的 dark2 解决方案。

无法通过 Altair/VegaLite 自动扩展配色方案。您需要手动定义要使用的颜色,或者切换到另一种配色方案,如您所述。

请注意,当您使用如此多的分类颜色时,reader 可能很难解析图中的信息,通常最好通过分面将图分解为多个图,或者使用 labels/hovering 来编码一些信息,而不是仅仅依赖于颜色。有some good pointers on this topic in this book chapter.