Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在seaborn直方图子图中添加分位数和平均线,并使用循环_Python_Pandas_Seaborn - Fatal编程技术网

Python 在seaborn直方图子图中添加分位数和平均线,并使用循环

Python 在seaborn直方图子图中添加分位数和平均线,并使用循环,python,pandas,seaborn,Python,Pandas,Seaborn,嗨,我想给seaborn直方图子地块添加分位数和平均线 示例数据: import seaborn as sns from matplotlib import pyplot as plt penguins = sns.load_dataset("penguins") penguins.dropna(inplace=True) fig, axes = plt.subplots(2, 2, figsize=(20, 7)) plot_data = penguins[['bill_l

嗨,我想给seaborn直方图子地块添加分位数和平均线

示例数据:

import seaborn as sns
from matplotlib import pyplot as plt
penguins = sns.load_dataset("penguins")
penguins.dropna(inplace=True)
fig, axes = plt.subplots(2, 2, figsize=(20, 7))
plot_data = penguins[['bill_length_mm', 'bill_depth_mm', 'flipper_length_mm', 'body_mass_g']]
for col, ax in zip(plot_data, axes.flat):
    print(col, ax)
    sns.histplot(ax=ax, data=plot_data, x=plot_data[col], hue=penguins['sex'], multiple='stack')
要将分位数线添加到单个子批次中,请执行以下操作:
轴[0,0]。轴(绘图数据['bill\u length\u mm'])。分位数(0.25),0,1,color='red',ls='--')

我想把0.25,0.5,0.75分位数和平均值加到每个子图中

我试过了,但没用

quantiles = [0.25, 0.5, 0.75]
colors = ['green', 'red', 'blue']
l = []
for col in plot_data.columns:
    for q, c in zip(quantiles, colors):
        l.append([col, q, plot_data.loc[:,col].quantile(q), c])

for l_, ax in zip(l, axes):
    ax.axvline(l_[2], 0, 1, color=l[3], ls='--')

通过分别从要绘制的数据的统计数据中获得25%、50%和75%,绘制一条垂直线。请参阅


你离得太近了。您只需在每个分位数颜色组合的每个子批次中重复工作
axvline
解决方案。您正确地认为,压缩它们是实现这一目标的一种方法。尽可能靠近您的尝试:

...
sns.histplot(ax=ax, data=plot_data, x=plot_data[col], hue=penguins['sex'], multiple='stack')
for q, c in zip(quantiles, colors):
    ax.axvline(plot_data[col].quantile(q), 0, 1, color=c, ls='--')
...
样本输出:

...
sns.histplot(ax=ax, data=plot_data, x=plot_data[col], hue=penguins['sex'], multiple='stack')
for q, c in zip(quantiles, colors):
    ax.axvline(plot_data[col].quantile(q), 0, 1, color=c, ls='--')
...