[英]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.