Python 同一轴线上的两个seaborn距离

Python 同一轴线上的两个seaborn距离,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我正试图找到一个很好的方法,在同一个轴上画两个。它并没有我想要的那么漂亮,因为直方图条相互覆盖。我不想使用countplot或barplot仅仅因为它们看起来不漂亮。当然,如果没有其他方法,我会用那种方式做,但是distplot看起来很不错。但是,如前所述,这些条带现在相互覆盖(见图) 因此,有没有办法将两个distplot频率条安装到一个箱子上,这样它们就不会重叠?还是把计数放在彼此的上面?基本上我想在seaborn做这件事: 任何清理它的想法都是非常受欢迎的。谢谢 MWE: 正如@mwas

我正试图找到一个很好的方法,在同一个轴上画两个。它并没有我想要的那么漂亮,因为直方图条相互覆盖。我不想使用
countplot
barplot
仅仅因为它们看起来不漂亮。当然,如果没有其他方法,我会用那种方式做,但是
distplot
看起来很不错。但是,如前所述,这些条带现在相互覆盖(见图)

因此,有没有办法将两个distplot频率条安装到一个箱子上,这样它们就不会重叠?还是把计数放在彼此的上面?基本上我想在seaborn做这件事:

任何清理它的想法都是非常受欢迎的。谢谢

MWE:


正如@mwaskom所说,seaborn正在包装matplotlib绘图功能(大部分都是这样),以提供更复杂、更美观的图表

您需要的是“足够简单”的matplotlib:

sns.set_context("paper", font_scale=2)
sns.set_style("white")
plt.rc('text', usetex=False)
fig, ax = plt.subplots(figsize=(4,4))
sns.despine(left=True)

# mats=dict()
mats0=[1,1,1,1,1,2,3,3,2,3,3,3,3,3]
mats1=[3,3,3,3,3,4,4,4,5,6,1,1,2,3,4,5,5,5]
N=max(mats0 + mats1)

# binsize = np.arange(0,N+1,1)
binsize = N
B=['Thing1','Thing2']

ax.hist([mats0, mats1], binsize, histtype='bar', 
        align='mid', label=B, alpha=0.4)#, rwidth=0.6)

ax.set_xlabel('My label')
ax.get_yaxis().set_visible(False)
# ax.set_xlim(0,N+1)
ax.legend()
plt.show()
这将产生:


您可以取消注释ax。设置xlim(0,N+1)以在该直方图周围留出更多空间。

您是在问如何绘制直方图吗?不,我是在问如何在链接中绘制右下角或左上角。我在问如何在seaborn中执行此操作。seaborn使用matplotlib。没有“在seaborn”这个词。这是真的,但是seaborn确实有它自己的功能,就像上面的功能一样。我宁愿在回到matplotlib之前完成这项工作。我也明白了,这看起来非常相似。注意,我并不怀疑@mwaskom,他自然是正确的。我想知道是否有可能以一种更“海洋出生”的方式来解释上述内容(是的,我自己也不确定这是什么意思)。谢谢你们两位。
sns.set_context("paper", font_scale=2)
sns.set_style("white")
plt.rc('text', usetex=False)
fig, ax = plt.subplots(figsize=(4,4))
sns.despine(left=True)

# mats=dict()
mats0=[1,1,1,1,1,2,3,3,2,3,3,3,3,3]
mats1=[3,3,3,3,3,4,4,4,5,6,1,1,2,3,4,5,5,5]
N=max(mats0 + mats1)

# binsize = np.arange(0,N+1,1)
binsize = N
B=['Thing1','Thing2']

ax.hist([mats0, mats1], binsize, histtype='bar', 
        align='mid', label=B, alpha=0.4)#, rwidth=0.6)

ax.set_xlabel('My label')
ax.get_yaxis().set_visible(False)
# ax.set_xlim(0,N+1)
ax.legend()
plt.show()