繁体   English   中英

Matplotlib 直方图或 Seaborn distplots 的 bin 没有轮廓

[英]No outlines on bins of Matplotlib histograms or Seaborn distplots

在使用 seaborn 和 Jupyter notebook 做一些练习题时,我意识到 distplot() 图形在文档中的所有示例图形所具有的各个 bin 上没有较暗的轮廓。 我尝试使用 Pycharm 创建图表并注意到同样的事情。 我认为这是一个seaborn 问题,我尝试了一些使用 matplotlib 的 hist() 图表,但得到了相同的结果。

import matplotlib.pyplot as plt
import seaborn as sns
titanic = sns.load_dataset('titanic')
plt.hist(titanic['fare'], bins=30)

产生了以下图表:

在此处输入图片说明

最后,我偶然发现了 plt.hist() 函数上的 'edgecolor' 参数,并将其设置为黑色即可。 不幸的是,我没有找到类似的参数用于 seaborn distplot() 函数,所以我仍然无法获得看起来应该的图表。

我研究过在 matplotlib 中更改 rcParams,但我没有这方面的经验,我运行的以下脚本似乎什么也没做:

import matplotlib as mpl

mpl.rcParams['lines.linewidth'] = 1
mpl.rcParams['lines.color'] = 'black'
mpl.rcParams['patch.linewidth'] = 1
mpl.rcParams['patch.edgecolor'] = 'black'
mpl.rcParams['axes.linewidth'] = 1
mpl.rcParams['axes.edgecolor'] = 'black'

我只是在猜测我应该改变的值,但再次运行我的图表显示没有任何变化。

然后我尝试使用 mpl.rcdefaults() 返回默认设置,但再次没有改变。

我使用 conda 重新安装了 matplotlib,但图形看起来仍然相同。 我对如何更改这些图表的默认边缘颜色的想法不多了。 我正在使用 Conda 构建运行最新版本的 Python、matplotlib 和 seaborn。

作为 matplotlib 2.0 更新的一部分,条形图上的边在默认情况下关闭的 但是,您可以使用 rcParam

plt.rcParams["patch.force_edgecolor"] = True

全局打开边缘。

可能最简单的选择是在创建 seaborn 绘图时使用hist_kws参数专门设置边缘hist_kws

ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))

对于 matplotlib 绘图,您可以直接使用edgecolorec参数。

plt.bar(x,y, edgecolor="k")
plt.hist(x, edgecolor="k")

同样,对于熊猫图,

df.plot(kind='hist',edgecolor="k")

一个完整的seaborn示例:

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

x = np.random.randn(100)
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
plt.show()

在此处输入图片说明

截至 2021 年 3 月:

sns.histplot(data, edgecolor='k', linewidth=2)

工作。 使用hist_kws=dict(edgecolor="k", linewidth=2)出现错误:
AttributeError: 'PolyCollection' object has no property 'hist_kws'

使用 seaborn 中的可用样式也可以解决您的问题。 seaborn 中可用的样式有:

  1. 蜱虫
  2. 黑暗的
  3. 暗格
  4. 白色的
  5. 白格

暂无
暂无

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

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