How can I make a blank subplot in matplotlib?

前端 未结 4 515
长发绾君心
长发绾君心 2020-12-04 13:02

I am making a group of subplot (say, 3 x 2) in matplotlib, but I have fewer than 6 datasets. How can I make the remaining subplot blank?

The arrangement looks like t

相关标签:
4条回答
  • 2020-12-04 13:37

    A much improved subplot interface has been added to matplotlib since this question was first asked. Here you can create exactly the subplots you need without hiding the extras. In addition, the subplots can span additional rows or columns.

    import pylab as plt
    
    ax1 = plt.subplot2grid((3,2),(0, 0))
    ax2 = plt.subplot2grid((3,2),(0, 1))
    ax3 = plt.subplot2grid((3,2),(1, 0))
    ax4 = plt.subplot2grid((3,2),(1, 1))
    ax5 = plt.subplot2grid((3,2),(2, 0))
    
    plt.show()
    

    enter image description here

    0 讨论(0)
  • 2020-12-04 13:43

    You could always hide the axes which you do not need. For example, the following code turns off the 6th axes completely:

    import matplotlib.pyplot as plt
    
    hf, ha = plt.subplots(3,2)
    ha[-1, -1].axis('off')
    
    plt.show()
    

    and results in the following figure:

    An image of a 3x2 grid of graphs, with no graph rendered in the bottom right cell

    Alternatively, see the accepted answer to the question Hiding axis text in matplotlib plots for a way of keeping the axes but hiding all the axes decorations (e.g. the tick marks and labels).

    0 讨论(0)
  • 2020-12-04 13:52

    It's also possible to hide a subplot using the Axes.set_visible() method.

    import matplotlib.pyplot as plt
    import pandas as pd
    
    fig = plt.figure()
    data = pd.read_csv('sampledata.csv')
    
    for i in range(0,6):
    ax = fig.add_subplot(3,2,i+1)
    ax.plot(range(1,6), data[i])
    if i == 5:
        ax.set_visible(False)
    
    0 讨论(0)
  • 2020-12-04 14:02

    Would it be an option to create the subplots when you need them?

    import matplotlib
    matplotlib.use("pdf")
    import matplotlib.pyplot as plt
    
    plt.figure()
    plt.gcf().add_subplot(421)
    plt.fill([0,0,1,1],[0,1,1,0])
    plt.gcf().add_subplot(422)
    plt.fill([0,0,1,1],[0,1,1,0])
    plt.gcf().add_subplot(423)
    plt.fill([0,0,1,1],[0,1,1,0])
    plt.suptitle("Figure Title")
    plt.gcf().subplots_adjust(hspace=0.5,wspace=0.5)
    plt.savefig("outfig")
    
    0 讨论(0)
提交回复
热议问题