在使用seaborn和Jupyter笔记本做一些练习问题的同时,我意识到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。
答案 0 :(得分:47)
作为matplotlib 2.0更新的一部分,条形图上的边缘为turned off by default。但是,您可以使用rcParam
plt.rcParams["patch.force_edgecolor"] = True
全局转动边缘。
可能最简单的选择是在创建seaborn图时专门设置edgecolor,使用hist_kws
参数,
ax = sns.distplot(x, hist_kws=dict(edgecolor="k", linewidth=2))
对于matplotlib图,您可以直接使用edgecolor
或ec
参数。
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()
答案 1 :(得分:3)
截至 2021 年 3 月:
sns.histplot(data, edgecolor='k', linewidth=2)
工作。
使用 hist_kws=dict(edgecolor="k", linewidth=2)
出现错误:
AttributeError: 'PolyCollection' object has no property 'hist_kws'
答案 2 :(得分:0)
使用 seaborn 中的可用样式也可以解决您的问题。 seaborn 中可用的样式有: