没有关于Matplotlib直方图或Seaborn distplots的箱子的轮廓

Col*_*ley 29 python matplotlib python-3.x seaborn

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

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

得到以下图表:

在此输入图像描述

最后,我偶然发现了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'
Run Code Online (Sandbox Code Playgroud)

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

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

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

Imp*_*est 54

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

plt.rcParams["patch.force_edgecolor"] = True
Run Code Online (Sandbox Code Playgroud)

全局转动边缘.

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

ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
Run Code Online (Sandbox Code Playgroud)

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

plt.bar(x,y, edgecolor="k")
plt.hist(x, edgecolor="k")
Run Code Online (Sandbox Code Playgroud)

同样,对于大熊猫的情节,

df.plot(kind='hist',edgecolor="k")
Run Code Online (Sandbox Code Playgroud)

一个完整的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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 我肯定会重复使用:“总的来说,seaborn在样式设置方面非常贪婪。” (2认同)

rah*_*uja 9

截至 2021 年 3 月:

sns.histplot(data, edgecolor='k', linewidth=2)
Run Code Online (Sandbox Code Playgroud)

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