首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >plt.subplots()和plt.figure()之间的区别

plt.subplots()和plt.figure()之间的区别
EN

Stack Overflow用户
提问于 2015-04-14 04:23:50
回答 1查看 6K关注 0票数 12

在python matplotlib中,有两种用于绘制绘图的约定:

1.再分配

代码语言:javascript
复制
plt.figure(1,figsize=(400,8))

2.再分配

代码语言:javascript
复制
fig,ax = plt.subplots()
fig.set_size_inches(400,8)

两者都有不同的方式来做同样的事情。例如定义轴标签。

哪一种更适合使用?一个相对于另一个有什么优势?或者使用matplotlib绘制图形的“良好实践”是什么?

EN

回答 1

Stack Overflow用户

发布于 2020-08-31 07:08:26

尽管@tacaswell已经对关键的区别作了简短的评论。我只会根据我自己在matplotlib方面的经验来补充这个问题。

plt.figure只创建一个Figure (但其中没有Axes ),这意味着您必须指定ax来放置数据(行、散点、图像)。最低限度代码应该如下所示:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

# create a figure
fig = plt.figure(figsize=(7.2, 7.2))
# generate ax1
ax1 = fig.add_axes([0.1, 0.1, 0.5, 0.5])
# generate ax2, make it red to distinguish
ax2 = fig.add_axes([0.6, 0.6, 0.3, 0.3], fc='red')
# add data
x = np.linspace(0, 2*np.pi, 20)
y = np.sin(x)
ax1.plot(x, y)
ax2.scatter(x, y)

plt.subplots(nrows=, ncols=)的例子中,您将得到Figure和一个Axes(AxesSubplot)数组。它主要用于同时生成多个子样地。一些示例代码:

代码语言:javascript
复制
def display_axes(axes):
    for i, ax in enumerate(axes.ravel()):
        ax.text(0.5, 0.5, s='ax{}'.format(i+1), transform=ax.transAxes)

# create figures and (2x2) axes array
fig, axes = plt.subplots(2, 2, figsize=(7.2, 7.2))
# four (2*2=4) axes
ax1, ax2, ax3, ax4 = axes.ravel()
# for illustration purpose
display_axes(axes)

摘要:

  • 当您想要对您的轴进行更多的自定义时,通常使用plt.figure(),如位置、大小、颜色等。有关更多细节,您可以查看艺术家教程。(我个人更喜欢这个作为个人情节)。
  • 建议使用plt.subplots()生成网格中的多个子图。您还可以使用“网格规范”和“子图”获得更高的灵活性,请参见详细信息这里
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29619149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档