[英]Plotting category means in seaborn categorical plot
我有一個在 x 軸上帶有定性變量的圖,每個類別的垂直散點使用sns.stripplot
。 我想指出每個類別的平均值。 也許每個類別的平均 y 值處有一條短水平線。 我怎樣才能做到這一點?
您可以使用matplotlib.pyplot.hlines
來記錄線條的寬度和位置。 這是一個使用 seaborn tips
數據集的示例
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
tips = sns.load_dataset("tips")
sns.stripplot(x="day", y="total_bill", data=tips)
labels = [e.get_text() for e in plt.gca().get_xticklabels()]
ticks = plt.gca().get_xticks()
w = 0.1
for day, idx in enumerate(labels):
idx = labels.index(day)
plt.hlines(tips[tips['day'] == day]['total_bill'].mean(), ticks[idx]-w, ticks[idx]+w)
plt.show()
labels = [e.get_text() for e in plt.gca().get_xticklabels()]
從 sns.stripplot 自動生成的sns.stripplot
提取文本,這比tips['day'].unique()
更有用,因為標簽的順序不一定與從tips['day'].unique
返回的順序匹配. tips['day'].unique
。 這是因為如果未指定order
參數,則訂單將是
[...] 從數據對象推斷。
plt.hlines(tips[tips['day'] == day]['total_bill'].mean(), ticks[idx]-w, ticks[idx]+w)
在 'strip' 的中心周圍和在'total_bill'
列的平均值的高度處繪制長度為w*2
'total_bill'
其中該行的'day'
值等於當天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.