繁体   English   中英

seaborn 条形图中的条不着色

[英]seaborn not coloring bars in barplot

我已经开始研究我的论文,但我已经遇到了问题。 我正在尝试做一个 plot 的酒吧。 250 个条,但似乎 seaborn 没有显示 colors 对于大多数条。 我认为它可以在调色板中循环 - 但它只显示它们是白色的。 如果我取一个较小的样本(我认为最多 99 个),每个条都是彩色的。 即使只有一种颜色(不是调色板),也会显示白色条。

这是代码和图表:

有人可以帮我弄这个吗? 谢谢!

这是一段代码来测试seaborn的调色板:

import numpy as np
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sb

print("Seaborn version : {0}".format(sb.__version__))
# Seaborn version : 0.10.0

print("Matplotlib version : {0}".format(matplotlib.__version__))
# Matplotlib version : 3.1.3

只是为了让您知道它适用于这些版本

# simple color test without palette
n = 1000
x = np.arange(1,n+1,1)
y = np.random.randint(-100,100,n)*np.random.random(n)
sb.barplot(x,y)
plt.xticks([])
plt.show()

在此处输入图片说明

# with your color choices
plt.figure(figsize=(20,20))
sb.barplot(x,y, palette=sb.color_palette("RdBu",n_colors=7))
plt.xticks([])
plt.show()

在此处输入图片说明

所以它似乎适用于我的代码数组。

也许:

  • seaborn 无法理解您的数据(检查您的数据框?)

  • 您有一个有问题的 seaborn 或 matplotlib 版本(尝试 pip install seaborn==0.10.0 和 pip install matplotlib==3.1.3)

  • 您可以尝试其他调色板

希望这可以帮助!

编辑:感谢@ImportanceOfBeingErnest,我想我理解你的问题。 它来自这种风格,只需注释/取消注释即可查看结果

# sb.set_style("darkgrid")

遗憾的是,我没有找到任何与darkgrid 样式相关的kwargs 选项来删除该错误...所以我建议我们手动重新创建此样式!

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.set_facecolor('whitesmoke')
# background color
ax.grid(color='white', linestyle='-', linewidth=1)
# the grid
sb.barplot(x,y,zorder=2, palette=sb.color_palette("RdBu",n_colors=7))
#zorder=2 to draw above the grid
plt.xticks([])
plt.show()

在此处输入图片说明

我认为出现这个问题是因为,默认情况下,在seaborn ,条形图中的barplot用细白色边界线勾勒出轮廓。 当条形本身非常细时,您只能看到这个白色边界。 尝试将绘图命令更改为:

g = sb.barplot(x = x, y = y, palette = sb.color_palette("RdBu", n_colors=7), lw=0.)

lw=0. 删除边界线,然后您应该会看到条形颜色。

在绘图之前尝试sns.reset_orig()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM