当前位置: 首页 > 面试题库 >

Python-使用matplotlib面向对象的界面进行seaborn绘图

洪璞瑜
2023-03-14
问题内容

我非常喜欢matplotlib以OOP风格使用:

f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)

这样可以更轻松地跟踪多个图形和子图。

问题:如何以这种方式使用seaborn?或者,如何将此示例更改为OOP样式?如何分辨seaborn绘图功能(例如lmplot哪个Figure或哪个)Axes?


问题答案:

这在某种程度上取决于你使用的是哪种功能。

Seaborn中的绘图功能大致分为两类

  • “Axes-level” 功能,包括regplotboxplotkdeplot,和许多其他
  • “Figure-level”功能,包括lmplotfactorplotjointplot和一个或两个其他

通过采用显式ax参数并返回Axes对象来标识第一组。如此建议,你可以将它们传递Axes给它们,从而以“面向对象”的方式使用它们:

f, (ax1, ax2) = plt.subplots(2)
sns.regplot(x, y, ax=ax1)
sns.kdeplot(x, ax=ax2)

轴级功能仅会吸引到,Axes并且不会与图形混淆,因此它们可以在面向对象的matplotlib脚本中完美地愉快地共存。

第二组功能(Figure-level)的特征在于,生成的图可能包含多个轴,这些轴始终以“有意义”的方式组织。这意味着这些功能需要完全控制图形,因此不可能绘制lmplot一个已经存在的图形。调用该函数总是会初始化图形并将其设置为要绘制的特定图。

但是,一旦调用lmplot,它将返回类型的对象FacetGrid。该对象具有一些对生成的图进行操作的方法,这些方法对图的结构有所了解。它还在FacetGrid.figFacetGrid.axes参数处公开了基础图形和轴数组。该jointplot功能非常相似,但是它使用一个JointGrid对象。因此,你仍然可以在面向对象的上下文中使用这些函数,但是所有自定义必须在调用该函数之后进行。



 类似资料:
  • 问题内容: 我非常喜欢以OOP风格使用: 这样可以更轻松地跟踪多个图形和子图。 问题:如何以这种方式使用seaborn?或者,如何将此示例更改为OOP样式?如何分辨绘图功能(例如哪个或哪个)? 问题答案: 这在某种程度上取决于您使用的是哪种功能。 Seaborn中的绘图功能大致分为两类 “轴级”功能,包括,,,和许多其他 “图级”功能,包括,,和一个或两个其他 通过采用显式参数并返回对象来标识第一

  • 读者肯定听过 Python 中“一切皆对象”的说法,但可能并不了解它的具体含义,只是在学习的时候听说 Python 是面向对象的编程语言,本节将向大家详细介绍 Python 面向对象的含义。 面向对象编程是在面向过程编程的基础上发展来的,它比面向过程编程具有更强的灵活性和扩展性。面向对象编程是程序员发展的分水岭,很多初学者会因无法理解面向对象而放弃学习编程。 面向对象编程(Object-orien

  • Python 一直是面向对象的语言,因为它存在。在本教程中,我们将尝试在 Python 编程中获得 OOPS 的深入功能。

  • 本单元是Python3中面向对象的一个进阶 上一章只是简单的介绍了一下类的继承,多态等特种本章介绍内容如下: 多重继承 元类 定制类 具体介绍 接下来演示,如何给类或者是实例对象添加新的属性和方法 实例对象 class Person(object): pass a = Person() a.name = '12' 这样就在这个实例对象上增加了一个属性name,但是类并没有增加,所以其它

  • 面向对象的 Vanilla Lua 提供了部分面向对象的语法糖,这仅仅能在开发中提供一个功能不完备的独立 Class 的使用,有 self 可以来引用 LUA 表的某些属性和方法,但是更多的面向对象特性,比如继承,比如类的构造等,LUA 支持的并不是非常好,日常的业务开发中,我们确实有些通用的逻辑可能需要复用,或者数据需要共享,需要有父子关系等等。所以我们在 Vanilla 中,简单封装了部分面向

  • 本文向大家介绍matplotlib 命令式与面向对象的语法,包括了matplotlib 命令式与面向对象的语法的使用技巧和注意事项,需要的朋友参考一下 示例 Matplotlib支持绘图的面向对象和命令式语法。命令式语法被故意设计为非常类似于Matlab语法。 命令式语法(有时称为“状态机”语法)发出一串命令,所有命令都作用于最新图形或轴(如Matlab)。另一方面,面向对象的语法显式作用于感兴趣