首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >西博恩:如何用多个线图制作子图?sns.relplot似乎不支持它?

西博恩:如何用多个线图制作子图?sns.relplot似乎不支持它?
EN

Stack Overflow用户
提问于 2019-03-22 23:19:05
回答 1查看 12.9K关注 0票数 3

海运文档区分了图形级函数和轴级函数:https://seaborn.pydata.org/introduction.html#figure-level-and-axes-level-functions

我理解像sns.boxplot这样的函数可以以一个轴作为参数,因此可以在子图中使用。

但是sns.relplot()呢?没有办法把它放进子情节里吗?

更普遍地说,是否有任何方法可以使海运生成子图中的线图?

例如,这不起作用:

代码语言:javascript
复制
fig,ax=plt.subplots(2)
sns.relplot(x,y, ax=ax[0])

因为关系图不以斧头作为论据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-22 23:49:22

但那不是真的。您确实可以将axis对象传递给relplot。下面是一个最小的答案。这里的关键是关闭relplot返回的空轴对象。然后,您也可以使用ax[0]ax[1]向您的各个子图中添加额外的曲线,就像您对matplotlib所做的那样。

代码语言:javascript
复制
import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots(2)

xdata = np.arange(50)

sns.set(style="ticks")
tips = sns.load_dataset("tips")
g1 = sns.relplot(x="total_bill", y="tip", hue="day", data=tips, ax=ax[0])
g2 = sns.relplot(x="total_bill", y="tip", hue="day", data=tips, ax=ax[1])

# Now you can add any curves to individual axis objects 
ax[0].plot(xdata, xdata/5) 

# You will have to close the additional empty figures returned by replot
plt.close(g1.fig)
plt.close(g2.fig) 
plt.tight_layout()

您还可以单独使用seaborn绘制行图

代码语言:javascript
复制
import seaborn as sns
import numpy as np

x = np.linspace(0, 5, 100)
y = x**2

ax = sns.lineplot(x, y)
ax.set_xlabel('x-label')
ax.set_ylabel('y-label') 

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55308986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档