我有一个Pandasdf,我想在一个显示器与海运阴谋。我有一个变量要绘图,A,和一个变量色调,B。问题是B变量有ca。50个不同的值,所以我想自动创建一个网格的每个子图,说5列和必要的行数。现在我只能将图放在行或列中,其中:
sns.displot(data=df, x="A", col="B")
或
sns.displot(data=df, x="A", row="B")
有没有办法达到预期的效果?
b0zn9rqh1#
你在找col_wrap吗?col_wrap:int
col_wrap
将column变量按此宽度换行,使column facet跨越多行..
g = sns.displot(data=df, x="A", col="B", hue="B", col_wrap=5, height=3, aspect=1) g.fig.tight_layout() plt.show();
输出:
from string import ascii_uppercase np.random.seed(1) df = pd.DataFrame({ "A": np.random.randn(1000), "B": np.random.choice([*list(ascii_uppercase[-10:])], 1000) })
7lrncoxx2#
df
pandas.DataFrame.plot
kind='hist'
matplotlib
seaborn
# plot the dataframe ax = df.plot(kind='hist', by='B', bins=20, layout=(2, 5), figsize=(15, 6), legend=False, ec='k', sharey=True, sharex=True)
2条答案
按热度按时间b0zn9rqh1#
你在找
col_wrap
吗?col_wrap
:int将column变量按此宽度换行,使column facet跨越多行..
输出:
7lrncoxx2#
df
,可以使用pandas.DataFrame.plot
和kind='hist'
来实现,而无需导入另一个包。pandas.DataFrame.plot
使用matplotlib
作为默认后端,seaborn
是matplotlib
的高级API。