Plotting grids across the subplots Python matplotlib

前端 未结 2 1096
情歌与酒
情歌与酒 2021-02-13 22:22

I have tried the following:

d = [1,2,3,4,5,6,7,8,9]
f = [0,1,0,0,1,0,1,1,0]
fig = plt.figure()
fig.set_size_inches(30,10)
ax1 = fig.add_subplot(211)
line1 = ax         


        
相关标签:
2条回答
  • 2021-02-13 23:04

    There is no built-in option to create inter-subplot grids. In this case I'd say an easy option is to create a third axes in the background with the same grid in x direction, such that the gridline can be seen in between the two subplots.

    import matplotlib.pyplot as plt
    
    d = [1,2,3,4,5,6,7,8,9]
    f = [0,1,0,0,1,0,1,1,0]
    
    fig, (ax1,ax2) = plt.subplots(nrows=2, sharex=True)
    ax3 = fig.add_subplot(111, zorder=-1)
    for _, spine in ax3.spines.items():
        spine.set_visible(False)
    ax3.tick_params(labelleft=False, labelbottom=False, left=False, right=False )
    ax3.get_shared_x_axes().join(ax3,ax1)
    ax3.grid(axis="x")
    
    
    line1 = ax1.plot(d, marker='.', color='b', label="1 row")
    line1 = ax2.plot(f, marker='.', color='b', label="1 row")
    ax1.grid()
    ax2.grid()
    plt.show()
    

    0 讨论(0)
  • 2021-02-13 23:24

    Here is my solution:

    import matplotlib.pyplot as plt
    
    x1 = [1,2,3,4,5,6,7,8,9]
    x2= [0,1,0,0,1,0,1,1,0]
    x3= range(-10,0)
    # frameon=False removes frames
    # fig, (ax1,ax2, ax3) = plt.subplots(nrows=3, sharex=True, subplot_kw=dict(frameon=False))
    fig, (ax1,ax2, ax3) = plt.subplots(nrows=3, sharex=True)
    # remove vertical gap between subplots
    plt.subplots_adjust(hspace=.0)
    
    ax1.grid()
    ax2.grid()
    ax3.grid()
    
    ax1.plot(x1)
    ax2.plot(x2)
    ax3.plot(x3)
    

    Without frames subplot_kw=dict(frameon=False):

    0 讨论(0)
提交回复
热议问题