python - 仅在 seaborn 的最后一张图中显示的平均中值模式线
问题描述
我试图在两个图中显示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='')
解决方案
该命令plt
使用当前轴,而不是所有定义的轴。要在特定轴上绘制某些东西,您必须告诉 matplotlib/seaborn,您的意思是哪个轴:
from matplotlib import pyplot as plt
import pandas as pd
import seaborn as sns
df = pd.DataFrame({" rating": [1, 2, 3, 4, 6, 7, 9, 9, 9, 10], "dummy": range(10)})
f, (ax_box, ax_hist) = plt.subplots(2, sharex=True, gridspec_kw= {"height_ratios": (0.2, 1)})
mean=df[' rating'].mean()
median=df[' rating'].median()
mode=df[' rating'].mode().values[0]
sns.boxplot(data=df, x=" rating", ax=ax_box)
ax_box.axvline(mean, color='r', linestyle='--')
ax_box.axvline(median, color='g', linestyle='-')
ax_box.axvline(mode, color='b', linestyle='-')
sns.histplot(data=df, x=" rating", ax=ax_hist, kde=True)
ax_hist.axvline(mean, color='r', linestyle='--', label="Mean")
ax_hist.axvline(median, color='g', linestyle='-', label="Median")
ax_hist.axvline(mode, color='b', linestyle='-', label="Mode")
ax_hist.legend()
ax_box.set(xlabel='')
plt.show()
如果你有一大堆子图,你可以循环处理这个任务:
f, bunch_of_axes = plt.subplots(200)
...
for ax in bunch_of_axes:
ax.axvline(mean, color='r', linestyle='--')
ax.axvline(median, color='g', linestyle='-')
ax.axvline(mode, color='b', linestyle='-')
2021 年更新:我更改了 pandas 代码,因为get_values()
现在已弃用。Seaborn 也已弃用distplot
。替代方案是displot
,一个没有 ax 参数的图形级函数,或者histplot
其行为与 略有不同distplot
。
我现在在另一个线程中总结了如何distplot
使用histplot
.
推荐阅读
- javascript - 如何检测何时为 vscode 扩展按下了特定的快捷方式
- c# - 如何在C#中将文件解压缩到文件夹
- c# - 如何延迟运行方法,在延迟期间异步,但在方法运行时同步
- node.js - NodeJS WebSockets,在打开之前关闭连接
- python - 为我的项目使用别人的 github fork
- api - 从 Podio 应用程序获取所有 API 字段定义
- python - 二叉树变根
- javascript - 将数据库连接字符串更改为较新的版本,Web 应用程序在本地运行正常,但 url 在登录页面返回 404
- angular - 如何初始化一个空的 ComponentRef?
- php - 如何在 Laravel 8 中使用 srmklive/laravel-paypal v3