我试图在两个图中显示mean
,median
和mode
线,但它们只在最后一个图中可见:
#Cut the window in 2 parts
f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw={"height_ratios": (0.2, 1)})
#plt.figure(figsize=(10,7));
mean=df[' rating'].mean()
median=df[' rating'].median()
mode=df[' rating'].mode().get_values()[0]
plt.axvline(mean, color='r', linestyle='--')
plt.axvline(median, color='g', linestyle='-')
plt.axvline(mode, color='b', linestyle='-')
plt.legend({'Mean':mean,'Median':median,'Mode':mode})
sns.boxplot(df[" rating"], ax=ax_box)
sns.distplot(df[" rating"], ax=ax_hist)
ax_box.set(xlabel='')
2条答案
按热度按时间j8ag8udp1#
命令
plt
使用当前轴,而不是所有已定义的轴。要在一个特定的轴上绘制一些东西,你必须告诉matplotlib/seaborn,你指的是哪个轴:样本输出:
如果你有一大堆子情节,你可以用一个循环来完成这个任务:
如果没有可用的轴对象(例如,使用pandas打印或类似方法创建地物),可以使用以下方法解决此问题:
2021年更新:我更改了pandas代码,因为
get_values()
现在不推荐使用了。Seaborn也已弃用distplot
。可选的是displot
,一个没有ax参数的图形级函数,或者histplot
,其行为与distplot
略有不同。我已经总结了现在在另一个线程how to emulate the old
distplot
behavior withhistplot
.o2gm4chl2#
较短的一个(使用
jupyter notebook
):