我正在传递要用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')
是否可以在我想要的调色板中获得多个色相级别?我做错了什么还是一个错误?
答案 0 :(得分:1)
您需要传递颜色数量
类似的东西。
sns.scatterplot(data=s,
x='A',
y='B',
hue='C',
palette=sns.color_palette('bright', s.C.unique().shape[0])
)