使用matplotlib面向对象的界面用seaborn绘图我更喜欢使用matplotlibOOP风格:f, axarr = plt.subplots(2, sharex=True)axarr[0].plot(...)axarr[1].plot(...)这样可以更轻松地跟踪多个图形和子图。问题:如何使用seaborn这种方式?或者,如何将此示例更改为OOP样式?如何将seaborn绘图函数描述为lmplot哪个Figure或哪个Axes绘图?
1 回答
撒科打诨
TA贡献1934条经验 获得超2个赞
这取决于你正在使用的seaborn功能。
seaborn中的绘图功能大致分为两类
“轴级”功能,包括
regplot,boxplot,kdeplot,和许多其他“图级”功能,包括
lmplot,factorplot,jointplot和一个或两个其他
通过采用显式ax参数并返回Axes对象来识别第一组。正如这表明的那样,你可以通过传递它们来以“面向对象”的方式使用Axes它们:
f, (ax1, ax2) = plt.subplots(2)sns.regplot(x, y, ax=ax1)sns.kdeplot(x, ax=ax2)
轴级函数只会绘制到一个Axes并且不会弄乱图形,因此它们可以在面向对象的matplotlib脚本中完美地共存。
第二组函数(图级)的特征在于,得到的图可能包括几个始终以“有意义”方式组织的轴。这意味着函数需要完全控制图形,因此不可能绘制lmplot一个已存在的函数。调用该函数始终初始化一个图形并将其设置为它绘制的特定图形。
但是,一旦调用lmplot,它将返回该类型的对象FacetGrid。这个对象有一些方法可以对结果图进行操作,这些方法对图的结构有所了解。它还在FacetGrid.fig和FacetGrid.axes参数处公开了底层图形和轴数组。该jointplot函数非常相似,但它使用了一个JointGrid对象。因此,您仍然可以在面向对象的上下文中使用这些函数,但是在调用函数之后,所有自定义都必须进行。
添加回答
举报
0/150
提交
取消
