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

时间:2015-04-14 04:23:51

标签: python-2.7 matplotlib

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

1

plt.figure(1,figsize=(400,8))

2

fig,ax = plt.subplots()
fig.set_size_inches(400,8)

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

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

1 个答案:

答案 0 :(得分:1)

尽管@tacaswell已经对关键区别进行了简短评论。仅根据我自己在matplotlib的经验,我将为这个问题添加更多内容。

plt.figure仅创建一个Figure(但其中没有Axes),这意味着您必须指定用于放置数据(线,散点,图像)的轴。最小代码应如下所示:

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和一个AxesAxesSubplot)的数组。它主要用于同时生成许多子图。一些示例代码:

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()通常用于想要对轴进行更多自定义(例如位置,大小,颜色等)的情况。有关更多详细信息,请参见artist tutorial。 (我个人比较喜欢这种情况)。

  • 建议使用
  • plt.subplots()在网格中生成多个子图。您还可以使用'gridspec'和'subplots'获得更高的灵活性,请参见详细信息here