我更喜欢在OOP风格中使用matplotlib
:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
这使得跟踪多个图形和子图更容易。
问:如何使用seaborn?或者,如何将this example更改为OOP风格?如何告诉seaborn
绘图函数(如lmplot
)它将绘制到Figure
或Axes
?
我更喜欢在OOP风格中使用matplotlib
:
f, axarr = plt.subplots(2, sharex=True)
axarr[0].plot(...)
axarr[1].plot(...)
这使得跟踪多个图形和子图更容易。
问:如何使用seaborn?或者,如何将this example更改为OOP风格?如何告诉seaborn
绘图函数(如lmplot
)它将绘制到Figure
或Axes
?
1条答案
按热度按时间sg2wtvxw1#
这取决于你使用的是哪一个seaborn函数。
seaborn中的绘图功能大致分为两种类型:
regplot
、boxplot
、kdeplot
等relplot
、catplot
、displot
、pairplot
、jointplot
和一个或两个其他函数第一个组是通过获取一个显式的
ax
参数并返回一个Axes
对象来标识的,正如这里所建议的,你可以通过将你的Axes
传递给它们来以“面向对象”的方式使用它们:Axes级别的函数只会绘制到
Axes
上,不会干扰图形,因此它们可以在面向对象的matplotlib脚本中完美地共存。第二组功能(图形级别)的区别在于,结果图可能包含几个始终以“有意义”方式组织的轴。这意味着函数需要完全控制图形,因此不可能绘制,例如,一个
lmplot
到一个已经存在的图形上。调用该函数总是初始化一个图形,并为它正在绘制的特定绘图设置它。但是,一旦调用了
lmplot
,它将返回一个类型为FacetGrid
的对象。该对象具有一些方法,用于对结果图进行操作,这些方法对图的结构有一定的了解。它还在FacetGrid.fig
和FacetGrid.axes
参数处公开了基础图形和轴数组。jointplot
函数非常类似,但是它使用了一个JointGrid
对象。所以你仍然可以在一个面向对象的上下文中使用这些函数,但是你所有的定制都必须在你调用了这个函数之后。