How do I get multiple subplots in matplotlib?

I am a little confused about how this code works:

    fig, axes = plt.subplots(nrows=2, ncols=2)

How does the fig, axes work in this case? What does it do?

Also why wouldn't this work to do the same thing:

    fig = plt.figure()
    axes = fig.subplots(nrows=2, ncols=2)


There are several ways to do it. The subplots method creates the figure along with the subplots that are then stored in the ax array. For example:

    import matplotlib.pyplot as plt

    x = range(10)
    y = range(10)

    fig, ax = plt.subplots(nrows=2, ncols=2)

    for row in ax:
        for col in row:
            col.plot(x, y)

enter image description here

However, something like this will also work, it's not so "clean" though since you are creating a figure with subplots and then add on top of them:

    fig = plt.figure()

    plt.subplot(2, 2, 1)
    plt.plot(x, y)

    plt.subplot(2, 2, 2)
    plt.plot(x, y)

    plt.subplot(2, 2, 3)
    plt.plot(x, y)

    plt.subplot(2, 2, 4)
    plt.plot(x, y)

enter image description here


Back to homepage or read more recommendations: