How to set xlim and ylim for a subplot in matplotlib

I would like to limit the X and Y axis in matplotlib but for a speific subplot. As I can see subplot figure itself doesn't have any axis property. I want for example to change only the limits for the second plot!

    import matplotlib.pyplot as plt
    fig=plt.subplot(131)
    plt.scatter([1,2],[3,4])
    fig=plt.subplot(132)
    plt.scatter([10,20],[30,40])
    fig=plt.subplot(133)
    plt.scatter([15,23],[35,43])
    plt.show()

You should learn a bit of the OO interface to matplotlib, not just the state machine interface. Almost all of the plt.* function are thin wrappers that basically do gca().*.

plt.subplot returns an axes object. Once you have a reference to the axes object you can plot directly to it, change its limits, etc.

    import matplotlib.pyplot as plt

    ax1 = plt.subplot(131)
    ax1.scatter([1, 2], [3, 4])
    ax1.set_xlim([0, 5])
    ax1.set_ylim([0, 5])


    ax2 = plt.subplot(132)
    ax2.scatter([1, 2],[3, 4])
    ax2.set_xlim([0, 5])
    ax2.set_ylim([0, 5])

and so on for as many axes as you want.

or better, wrap it all up in a loop:

    import matplotlib.pyplot as plt

    DATA_x = ([1, 2],
              [2, 3],
              [3, 4])

    DATA_y = DATA_x[::-1]

    XLIMS = [[0, 10]] * 3
    YLIMS = [[0, 10]] * 3

    for j, (x, y, xlim, ylim) in enumerate(zip(DATA_x, DATA_y, XLIMS, YLIMS)):
        ax = plt.subplot(1, 3, j + 1)
        ax.scatter(x, y)
        ax.set_xlim(xlim)
        ax.set_ylim(ylim)

From: stackoverflow.com/q/15858192

Back to homepage or read more recommendations: