簡體   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