Python sns.histplot - 为什么颜色显示得如此奇怪?

问题描述 投票:0回答:1

运行以下代码时,我发现

red
blue
这两种颜色在绘图中显示得非常奇怪;此外,图例的颜色不匹配:

import matplotlib.pyplot as plt
import seaborn as sns

maxs = [35, 31, 35, 31, 34, 30, 31, 29, 30, 33]
clrs = ['red', 'blue', 'red', 'blue', 'red', 'blue', 'blue', 'blue', 'blue', 'red']

fig, ax = plt.subplots(figsize=(8, 4))

sns.histplot(ax = ax, x = maxs, bins = "auto", discrete = True, shrink = 0.5,
             stat = "count", element = "bars", kde = False, hue = clrs) 

plt.show() 

我不明白我犯了什么错误?有人可以提供任何帮助吗? enter image description here

python-3.x seaborn
1个回答
0
投票

使用

hue=clrs
,名称不会被解释为颜色,而是被解释为唯一的字符串。巧合的是,默认颜色恰好是红色和蓝色。您可以添加将名称映射到相应颜色的调色板。

通常不同的色调值可以占据相同的 x 位置,seaborn 应用 alpha 透明度。如果您确定不会重叠,可以将透明度设置为

1

bins

 时,
discrete=True
将被忽略。

import matplotlib.pyplot as plt
import seaborn as sns

maxs = [35, 31, 35, 31, 34, 30, 31, 29, 30, 33]
clrs = ['red', 'blue', 'red', 'blue', 'red', 'blue', 'blue', 'blue', 'blue', 'red']

fig, ax = plt.subplots(figsize=(8, 4))

sns.histplot(ax=ax, x=maxs, discrete=True, shrink=0.5,
             stat="count", element="bars", kde=False, hue=clrs,
             palette={'red': 'crimson', 'blue': 'dodgerblue'}, alpha=1)

plt.show()

sns.histplot where hue is a color column

© www.soinside.com 2019 - 2024. All rights reserved.