我正在使用以下代碼繪制退貨/未退貨產品百分比(y 軸)相對于這些產品(x 軸)給出的折扣百分比。如果您看到,所有條形都會增加到 100%。
sns.histplot(data=df_c, x='percent_discount_100', hue='returned',binwidth=10, stat='percent', ax=ax)
#ax.set_xlim(1,31)
#ax.set_xticks(range(0,100,10))
plt.show()

我想要的是更改每個條形上的百分比資訊,我的意思是,對于每個條形,我想添加回傳和不回傳產品的百分比(對于每個條形,顯然百分比會增加到 100%)。你能告訴我如何解決這個問題嗎?
還可以添加使用其他庫(例如 plotly 和 matplotlib)的解決方案。
uj5u.com熱心網友回復:
Seaborn 只是一個輕松探索資料的工具,并不完美。如果您想讓圖形可發布,請使用任何必要的工具。在您的情況下,pandas matplotlib 是更好的選擇。
沒有給出資料,我假設你的資料是這樣的(如果沒有,就這樣):
In [33]: df2 = pd.DataFrame(np.random.rand(10, 4), columns=["a", "b", "c", "d"])
In [34]: df2
Out[34]:
a b c d
0 0.440042 0.509648 0.863190 0.532108
1 0.087648 0.695300 0.830660 0.468570
2 0.807494 0.195466 0.911627 0.278780
3 0.870929 0.971947 0.997894 0.780992
4 0.205380 0.097973 0.803379 0.100402
5 0.958186 0.362425 0.915435 0.585129
6 0.961905 0.196360 0.080999 0.933527
7 0.785202 0.497949 0.992512 0.518781
8 0.874882 0.610012 0.348986 0.996064
9 0.424615 0.135498 0.931710 0.619083
然后,將其轉換為百分比,in df3,每行總和為 1.0:
In [46]: df3 = df2.apply(lambda x: x / sum(x) * 100, axis=1)
In [47]: df3
Out[47]:
a b c d
0 18.765234 21.733508 36.809987 22.691272
1 4.209449 33.392931 39.893775 22.503845
2 36.815260 8.911695 41.562896 12.710148
3 24.047114 26.836290 27.552722 21.563874
4 17.013872 8.116157 66.552564 8.317407
5 33.964091 12.846603 32.448702 20.740605
6 44.270478 9.037220 3.727897 42.964405
7 28.098676 17.819245 35.517338 18.564740
8 30.915164 21.555626 12.331912 35.197297
9 20.115278 6.418958 44.137918 29.327846
如果你只是想看看相對差異,
df3.plot.bar(stacked=True)

如果要在條形上方添加百分比,請參閱
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/375379.html
標籤:Python matplotlib 注释 海生 直方图
