python - 如何为多个类别设置 seaborn 调色板?
问题描述
我正在传递一个要绘制的熊猫数据框,pd.scatterplot
并且想要使用'bright'
调色板。颜色将由我传递hue
给绘图函数的整数系列中的值确定。
问题在于,这只适用于hue
Series 只有两个不同值的情况。当它只有一个或超过 2 个不同的值时,绘图默认为米色到紫色的调色板。
当使用一切设置调色板sns.set_palette('bright')
时,如上所述。但是当我palette='bright'
在绘图函数调用中进行操作时(并且 n_classes 是 != 2)我得到一个明确的值错误抛出:
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')
有没有办法在我想要的调色板中获得多个色调级别?我做错了什么还是这是一个错误?
解决方案
你需要传递颜色的数量
类似的东西。
sns.scatterplot(data=s,
x='A',
y='B',
hue='C',
palette=sns.color_palette('bright', s.C.unique().shape[0])
)
推荐阅读
- javascript - 正则表达式:获取惰性字符串
- javascript - 将python`time`对象返回到前端?
- java - 为什么在下面的代码中需要进行空检查?
- android - 来电时取消静音后手机只能振动,无法播放铃声
- python - Python,检查两个字符串是否逐个字符相等
- python - 如何在使用“melt”分组的 seaborn 计数图上获得高于条形的值
- java - Java ReDos 是否易受攻击?
- javascript - 如何将 OAuth 凭据传递给 Firebase auth 的 reauthenticate 方法?
- c++ - 交换指针数组(指向类的指针)元素
- dart - 如何使用 Drawer 类正确导航到多个页面