我使用 Python 的seaborn庫和histplot函式來創建堆疊條形圖。
這是我的資料和情節的示例:
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
group = np.repeat(['G1', 'G2'], 4)
value = np.array(['1', '2', '3', '4', '1', '2', '3', '4'])
percentage = np.array([20, 10, 40, 30, 50, 25, 20, 5])
stacked = pd.DataFrame({'Group':group, 'Value':value, 'Percentage':percentage})
sns.histplot(stacked, x = 'Group', hue = 'Value', weights = 'Percentage', multiple = 'stack', palette = 'colorblind', shrink = 0.75)
plt.legend(labels = stacked['Value'].unique()[::-1], bbox_to_anchor = (1, 1), fontsize = 8)

我只是想顛倒順序,Value使藍色部分 (1) 在底部,深橙色部分 (4) 在頂部。即,它的排序方式應與圖例中的相同,并且顏色應保持不變(1 = 藍色,2 = 淺橙色等)。不知何故,我無法創建這個。
任何幫助表示高度贊賞!
uj5u.com熱心網友回復:
您可以使用invert_yaxis和設定yticks從 0 到 100,如下所示:
axe = sns.histplot(stacked, x = 'Group', hue = 'Value', weights = 'Percentage', multiple = 'stack', palette = 'colorblind', shrink = 0.75)
plt.legend(labels = stacked['Value'].unique()[::-1], bbox_to_anchor = (1, 1), fontsize = 8)
plt.gca().invert_yaxis()
plt.yticks(np.arange(0,100,20), np.arange(100,0,-20))
axe.margins(y=0)
plt.show()
如果添加這些行,則會得到以下輸出:

轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/331259.html
標籤:Python matplotlib 海生
上一篇:如何在多個散點之間放置箭頭
