问题描述
我正在尝试创建两个情节-一个与seaborn一起在另一个情节下!
我的代码:
I'am trying to create two plots - one under another with seaborn!
My code:
fig, (ax1, ax2) = plt.subplots(nrows=2, sharex=True, figsize=(22,8))
p1 = sns.relplot(x="sns_codes", y="triad_quantity", hue="label", data=data_2, kind="line", ax=ax1)
p2 = sns.relplot(x="sns_codes", y="triad_quantity", hue="label", data=data_2, kind="line", ax=ax2)
但这会创建 4 个轴而不是 2 个!看:
But this creates 4 axes instead of 2! Look:
我放弃阅读这两个额外的轴-需要帮助.
这是创建数据的代码:
I give up getting read of these extra 2 axeses - need help.
Here's code to create data:
df ={'label': {0: 'top_5',
1: 'first_page',
2: 'win_ratecard',
4: 'switched_off',
5: 'top_5',
6: 'first_page',
7: 'win_ratecard',
9: 'switched_off',
10: 'top_5',
11: 'first_page'},
'report_date': {0: Timestamp('2018-08-21 00:00:00'),
1: Timestamp('2018-08-21 00:00:00'),
2: Timestamp('2018-08-21 00:00:00'),
4: Timestamp('2018-08-22 00:00:00'),
5: Timestamp('2018-08-22 00:00:00'),
6: Timestamp('2018-08-22 00:00:00'),
7: Timestamp('2018-08-22 00:00:00'),
9: Timestamp('2018-08-23 00:00:00'),
10: Timestamp('2018-08-23 00:00:00'),
11: Timestamp('2018-08-23 00:00:00')},
'sns_codes': {0: 0, 1: 0, 2: 0, 4: 1, 5: 1, 6: 1, 7: 1, 9: 2, 10: 2, 11: 2},
'triad_quantity': {0: 9,
1: 204,
2: 214,
4: 20,
5: 5,
6: 191,
7: 230,
9: 21,
10: 2,
11: 98}}
data_2 = pd.DataFrame(df)
推荐答案
以下是摆脱额外不需要的空图的可能解决方案.问题是当你调用 sns.relplot
时,relplot
返回一个 class:FacetGrid 对象
.可以在此处看到.但是,由于您传递了 ax1
和 ax2
进行绘图,因此这些分配了变量 p1
和 p2
的FacetGrid出现为空白地块.要摆脱这些,只需添加以下几行
Below is a possible solution to get rid of the additional unwanted empty plots. The problem was that when you call sns.relplot
, relplot
returns a class:FacetGrid object
. This can be seen here. But since you pass ax1
and ax2
for plotting, these FacetGrids which are assigned the variables p1
and p2
appear as blank plots. To get rid of these just add the following lines
plt.close(p1.fig)
plt.close(p2.fig)
这篇关于Seaborn重制版创建重复的轴的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!