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

使用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中的绘图功能大致分为两类

  • “轴级”功能,包括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,它将返回type的对象FacetGrid。该对象具有一些对生成的图进行操作的方法,这些方法对图的结构有所了解。它还在FacetGrid.figFacetGrid.axes参数处公开了基础图形和轴数组。该jointplot功能非常相似,但是它使用一个JointGrid对象。因此,您仍然可以在面向对象的上下文中使用这些功能,但是所有自定义必须在调用该功能之后进行。



 类似资料:
  • 问题内容: 我非常喜欢以OOP风格使用: 这样可以更轻松地跟踪多个图形和子图。 问题:如何以这种方式使用?或者,如何将此示例更改为OOP样式?如何分辨绘图功能(例如哪个或哪个)Axes? 问题答案: 这在某种程度上取决于你使用的是哪种功能。 Seaborn中的绘图功能大致分为两类 “Axes-level” 功能,包括,,,和许多其他 “Figure-level”功能,包括,,和一个或两个其他 通过

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

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

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

  • 面向对象是一种符合人类思维习惯的编程思想。现实生活中存在各种形态不同的事物,这些事物之间存在着各种各样的联系。在程序中使用对象来映射现实中的事物,使用对象的关系来描述事物之间的联系,这种思想就是面向对象。 提到面向对象,自然会想到面向过程,面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一一实现,使用的时候依次调用就可以了。面向对象则是把构成问题的事务按照一定规则划分为多个独立的对象,

  • 我正在为一个特定的实验构建一类绘图工具。我目前有两种绘图方法,一种是使用imshow()的静态绘图,另一种是使用imshow()的“电影”格式。 无论是方法还是任何未来的方法,都要获取与我可能编写的任何特定绘图方法相同的参数。在使用情节类时,我在一个配置对象中拥有所有这些参数。 我不想在每个plot方法中重写代码。我想初始化一个对象(我想是AxeImage),它将设置以下参数:vmin、vmax、