如何为多个类别设置深浅的调色板?

时间:2019-05-14 13:21:13

标签: python pandas matplotlib plot seaborn

我正在传递要用pd.scatterplot绘制的熊猫数据框,并希望使用'bright'调色板。颜色由整数系列中的值确定,我将hue传递给绘图函数。

问题在于,这仅在hue系列只有两个不同的值时有效。当一个矿石中只有两个以上不同值时,绘图默认为米色至紫色调色板。

使用sns.set_palette('bright')设置调色板时,上述所有操作都会发生。但是,当我在绘图函数调用中执行palette='bright'时(,n_classes为!= 2 ),我会抛出一个明确的Value Error:

ValueError: Palette {} not understood

以下是复制代码:

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

sns.set_palette('bright')        # first method

n_classes = 3

a = np.arange(10)
b = np.random.randn(10)
c = np.random.randint(n_classes, size=10)

s = pd.DataFrame({'A': a, 'B':b, 'C': c})

sns.scatterplot(data=s, x='A', y='B', hue='C')
plt.show()

对于第二种方法,只需将散点图调用更改为

sns.scatterplot(data=s, x='A', y='B', hue='C', palette='bright')

是否可以在我想要的调色板中获得多个色相级别?我做错了什么还是一个错误?

1 个答案:

答案 0 :(得分:1)

您需要传递颜色数量

类似的东西。

sns.scatterplot(data=s,
                x='A',
                y='B',
                hue='C',
               palette=sns.color_palette('bright', s.C.unique().shape[0])
               )