Seaborn 直方图使列变白

dok*_*ndr 2 python matplotlib python-3.x seaborn jupyter-notebook

在什么情况下 Seaborn 会将直方图列设为白色?我在 Jupyter 笔记本中使用 Seaborn:

import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
Run Code Online (Sandbox Code Playgroud)

然后我使用这个函数绘制直方图:

def plot_hist(data, xlabel, bins=None):

  if not bins:
      bins = int(np.sqrt(len(data)))

  _= plt.xlabel(xlabel)
  _= plt.hist(data, bins=bins)
Run Code Online (Sandbox Code Playgroud)

因此,在某些情况下,我的直方图包含所有蓝色列或一些蓝色和一些白色或仅白色列。请看附图。

如何让 Seaborn 总是画蓝色的柱子?

蓝柱

蓝色和白色

白色的

Wil*_*ler 5

我相信问题在于edgecolor直方图是white,并且随着您增加箱的数量或减少条的宽度,edgecolor开始覆盖facecolor. 您应该能够通过使用更高的 dpi 来修复它,

# globally
from matplotlib import rcParams
rcParams['figure.dpi'] = 300
# or for only this figure
fig = plt.figure(dpi=300)
Run Code Online (Sandbox Code Playgroud)

更薄的linewidth

# globally
from matplotlib import rcParams
rcParams['patch.linewidth'] = 0.5
# or for only this plot
_= plt.hist(data, bins=bins, linewidth=0.5)
Run Code Online (Sandbox Code Playgroud)

或完全删除轮廓,

_= plt.hist(data, bins=bins, edgecolor='none')
Run Code Online (Sandbox Code Playgroud)

请注意,可能需要在全局方法之后,sns.set()因为这可能会覆盖它们。