我试图用两个子图(一行,两列)创建一个图,其中一个垂直的distplot和一个垂直的barplot(都来自seaborn)共享Y轴。结果应该看起来有点像不对称的小提琴情节。
条形图的数据采用以下形式:
In[8]: barplot_data[0:5]
Out[8]:
[{'time': 0, 'val': 171.19374169863295},
{'time': 50, 'val': 2313.8459788903383},
{'time': 100, 'val': 1518.687964071397},
{'time': 150, 'val': 1355.8373488876694},
{'time': 200, 'val': 1558.7682098705088}]
即,对于每个时间步骤(以50为步长),我知道条的高度。 dist图的数据形式如下:
In[9]: distplot_data[0:5]
Out[9]: [605, 477, 51, 337, 332]
即,我想要绘制分布的一系列时间点。
以下是我在右侧子图中创建条形图的方法:
barplot_df = pd.DataFrame(barplot_data)
fig, axes = plt.subplots(1, 2, sharex=False, sharey=True, squeeze=False)
left_ax = axes[0][0]
right_ax = axes[0][1]
sns.barplot(y='time', x='val',
data=barplot_df,
orient='h',
ax = right_ax)
结果几乎是我想要的右侧:
同样,我可以将dist图放在左侧:
fig, axes = plt.subplots(1, 2, sharex=False, sharey=True, squeeze=False)
left_ax = axes[0][0]
right_ax = axes[0][1]
sns.distplot(distplot_data, ax=left_ax, vertical=True)
这也有效。我认为Y轴的方向是相反的,但无论如何都是奇怪的:
然而,现在我只是试图将它们绘制成相同的数字,并且它会对dist曲线造成严重破坏:
fig, axes = plt.subplots(1, 2, sharex=False, sharey=True, squeeze=False)
left_ax = axes[0][0]
right_ax = axes[0][1]
sns.barplot(y='time', x='val',
data=barplot_df,
orient='h',
ax = right_ax)
sns.distplot(distplot_data, ax=left_ax, vertical=True)
我只能想象这是因为distplot的轴不知何故被扭曲了什么?有人知道这里发生了什么吗?