【发布时间】:2019-12-29 20:16:58
【问题描述】:
我希望重现 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')
我是否必须遵循这篇帖子的第二个答案answer 暗示与seaborn做这件事很棘手, 还是我应该按照here 的建议返回 plt 以获得更简单的图表?
无论如何,我很想知道他们是如何在tutorial linked above 中堆叠酒吧的。
【问题讨论】:
-
本教程可能使用了更早版本的 seaborn。也可能 matplotlib 版本不同。在没有看太多细节的情况下,我怀疑this commit 是这里的关键变化。
-
好的,但最令我惊讶的是,传递专门的参数来绘制
histtype='barstacked'到plt.hist不会导致堆叠直方图。 -
对我来说更令人惊讶的是,它实际上似乎以前有效。 IE。如果您多次拨打
plt.hist,它就无法知道以前的电话。 -
如果我用 seaborn 0.8.1 和 matplotlib 2.0.2 运行它,结果是this,它有堆叠的条形,但结果是错误的(例如从中心轴看)。
-
找到了。它已在 this commit 中删除
标签: python matplotlib seaborn