matplotlib 5平方子图

时间:2016-01-15 16:30:25

标签: python matplotlib subplot

我尝试用matplotlib并排成功绘制5组数据,但收效甚微。无论我使用subplot2grid还是简单的subplot,我似乎都无法避免使用瘦图。我想并排5张图,高度为1:1:宽度。我只是为了简单而使用range()(我可以在单个图中成功绘制数据)

x = range(10)
y = range(10,20,1)
a1 = plt.subplot(151)
a1.plot(y,x)

a2 = plt.subplot(152)
a2.plot(x,y)

a3 = plt.subplot(153)
a3.plot(x,y)

a4 = plt.subplot(154)
a4.plot(x,y)

a5 = plt.subplot(155)
a5.plot(x,y)

我计划使用

将其保存为pdf
with PdfPages('fname.pdf') as pdf:
    plt.close('all')
    fig = plt.figure()

    script_for_plots_like_above()

    plt.tight_layout()
    pdf.savefig(fig) 

但是现在我只想要并排数字。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

这里有两个问题:

  1. 让情节变得正方形。
  2. 使画布适合您的情节。
  3. 要使图形成方形,可以在每个轴上使用ax.set_aspect('equal')。例如:

    import matplotlib.pyplot as plt
    
    plt.figure()
    x = range(10)
    y = range(10,20,1)
    
    a1 = plt.subplot(151)
    a1.plot(y,x)
    a1.set_aspect('equal')
    
    a2 = plt.subplot(152)
    a2.plot(x,y)
    a2.set_aspect('equal')
    
    a3 = plt.subplot(153)
    a3.plot(x,y)
    a3.set_aspect('equal')
    
    a4 = plt.subplot(154)
    a4.plot(x,y)
    a4.set_aspect('equal')
    
    a5 = plt.subplot(155)
    a5.plot(x,y)
    a5.set_aspect('equal')
    
    plt.savefig('plots-with-aspect.png')
    

    产生以下情节:

    enter image description here

    请注意,这些图现在是方形的,但它们位于很多空白区域的中间。您想使用figsize=(x,y)调整绘图的大小以适合轴,例如

    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(5*5, 5))
    x = range(10)
    y = range(10,20,1)
    
    a1 = plt.subplot(151)
    a1.plot(y,x)
    a1.set_aspect('equal')
    
    a2 = plt.subplot(152)
    a2.plot(x,y)
    a2.set_aspect('equal')
    
    a3 = plt.subplot(153)
    a3.plot(x,y)
    a3.set_aspect('equal')
    
    a4 = plt.subplot(154)
    a4.plot(x,y)
    a4.set_aspect('equal')
    
    a5 = plt.subplot(155)
    a5.plot(x,y)
    a5.set_aspect('equal')
    
    plt.savefig('plots-with-aspect-size.png')
    

    产生以下情节:

    enter image description here

    请注意,尺寸是相对于每个轴的轴数计算的。

    要进一步调整图表以适合图像,您可以在保存时设置严格的布局,例如

    plt.savefig('plots-with-aspect-size-tight.png', bbox_inches='tight')
    

    产地:

    enter image description here