[英]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 绘图,您可以直接使用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()
截至 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 中可用的样式有:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.