为了账号安全,请及时绑定邮箱和手机立即绑定

使用matplotlib面向对象的界面用seaborn绘图

使用matplotlib面向对象的界面用seaborn绘图

万千封印 2019-08-16 15:10:50
使用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中的绘图功能大致分为两类

  • “轴级”功能,包括regplotboxplotkdeplot,和许多其他

  • “图级”功能,包括lmplotfactorplotjointplot和一个或两个其他

通过采用显式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.figFacetGrid.axes参数处公开了底层图形和轴数组。该jointplot函数非常相似,但它使用了一个JointGrid对象。因此,您仍然可以在面向对象的上下文中使用这些函数,但是在调用函数之后,所有自定义都必须进行。


查看完整回答
反对 回复 2019-08-16
  • 1 回答
  • 0 关注
  • 482 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号