[Python] How to share secondary y-axis between subplots in matplotlib

Discussão em 'Python' iniciado por Stack, Abril 29, 2025.

  1. Stack

    Stack Membro Participativo

    If you have multiple subplots containing a secondary y-axis (created using twinx), how can you share these secondary y-axes between the subplots? I want them to scale equally in an automatic way (so not set the y-limits afterwards by hand). For the primary y-axis, this is possible by using the keyword sharey in the call of subplot.

    Below example shows my attempt, but it fails to share the secondary y-axis of both subplots. I'm using Matplotlib:

    ax = []

    #create upper subplot
    ax.append(subplot(211))
    plot(rand(1) * rand(10),'r')

    #create plot on secondary y-axis of upper subplot
    ax.append(ax[0].twinx())
    plot(10*rand(1) * rand(10),'b')

    #create lower subplot and share y-axis with primary y-axis of upper subplot
    ax.append(subplot(212, sharey = ax[0]))
    plot(3*rand(1) * rand(10),'g')

    #create plot on secondary y-axis of lower subplot
    ax.append(ax[2].twinx())
    #set twinxed axes as the current axes again,
    #but now attempt to share the secondary y-axis
    axes(ax[3], sharey = ax[1])
    plot(10*rand(1) * rand(10),'y')


    This gets me something like:

    [​IMG]

    The reason I used the axes() function to set the shared y-axis is that twinx doesn't accept the sharey keyword.

    I am using Python 3.2 on Win7 x64. Matplotlib version is 1.2.0rc2.

    Continue reading...

Compartilhe esta Página