gpt4 book ai didi

python - 如何在 PairGrid 或 pairplot 中获得堆叠直方图

转载 作者:行者123 更新时间:2023-12-05 02:11:19 26 4
gpt4 key购买 nike

我希望重现 that tutorial 中的 PairGrid 图,但在本地,我的条形图没有像教程中那样堆叠,我不知道如何让它们堆叠起来。

import seaborn as sns
import matplotlib.pyplot as plt # for graphics
import os
os.sys.version
# '3.6.4 (default, Sep 20 2018, 19:07:50) \n[GCC 5.4.0 20160609]'

sns.__version__
# '0.9.0'

mpg = sns.load_dataset('mpg')

g = sns.PairGrid(data=mpg[["mpg", "horsepower", "weight", "origin"]], hue="origin")
g.map_upper(sns.regplot)
g.map_lower(sns.residplot)

# below for the histogram
g.map_diag(plt.hist)

# also I tried
# g.map_diag(lambda x, label, color: plt.hist(x, label=label, color=color, histtype='barstacked', alpha=.4))
# g.map_diag(plt.hist, histtype='barstacked')
# but same result

g.savefig('./Plots/mpg.svg')

My plots

The tutorial's plot

我必须遵循这篇文章的第二个答案吗 answer暗示使用 seaborn 非常棘手,或者我应该按照建议转回 plt here想要更简单的图表?

无论如何,我很想知道他们是如何在 tutorial linked above 中堆叠他们的酒吧的.

最佳答案

PairGrid 对角线上堆叠直方图的选项已从 seaborn 中删除 this commit因此在 seaborn 0.9 中不再可用。

解决方法是先收集所有数据,然后将其绘制到相应的坐标轴上。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd

df = sns.load_dataset('mpg')

g = sns.PairGrid(data=df[["mpg", "horsepower", "weight", "origin"]], hue="origin")
g.map_upper(sns.regplot)
g.map_lower(sns.residplot)

# below for the histograms on the diagonal
d = {}
def func(x, **kwargs):
ax = plt.gca()

if not ax in d.keys():
d[ax] = {"data" : [], "color" : []}
d[ax]["data"].append(x)
d[ax]["color"].append(kwargs.get("color"))

g.map_diag(func)
for ax, dic in d.items():
ax.hist(dic["data"], color=dic["color"], histtype="barstacked")

plt.show()

enter image description here

关于python - 如何在 PairGrid 或 pairplot 中获得堆叠直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57644355/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com