【问题标题】:Subplot of tables in pylabpylab中表格的子图
【发布时间】:2012-06-26 13:53:03
【问题描述】:

我正在寻找一种方法来创建包含几个作为表格的子图的图形。让我试着解释一下我在说什么。下面的图有几个子图,它们是imshow 图。我想要完全相同的数字,但我想要的不是“imshow”图,而是简单的表格。在我的示例中,它们只会显示值 1 和 2:

[1, 2]
[2, 1]

我应该怎么做?

提前致谢

这是我用来生成图表的代码。

import pylab
import numpy as np

x = np.array([[1,2],[2,1]])

fig = pylab.figure()

fig_list = []

for i in xrange(5):

    fig_list.append( fig.add_subplot(2,3,i+1) )
    fig_list[i] = pylab.imshow(x)


pylab.savefig('my_fig.pdf')
pylab.show()

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    您可以使用 pylab.table 命令,文档找到 here

    例如:

    import pylab
    import numpy as np
    
    x = [[1,2],[2,1]]
    
    fig = pylab.figure()
    
    axes_list = []
    table_list = []
    
    for i in xrange(5):
        axes_list.append( fig.add_subplot(2,3,i+1) )
        axes_list[i].set_xticks([])
        axes_list[i].set_yticks([])
        axes_list[i].set_frame_on(False)
        table_list.append(pylab.table(cellText=x,colLabels = ['col']*2,rowLabels=['row']*2,colWidths = [0.3]*2,loc='center'))
    
    pylab.savefig('my_fig.pdf')
    pylab.show()
    

    我还创建了一个额外的列表变量,并重命名了 fig_list,因为轴实例被绘制对象的实例覆盖。现在您可以访问两个句柄了。

    其他有用的命令包括:​​

    # Specify a title for the plot
    axes_list[i].set_title('test')
    
    # Specify the axes size and position
    axes_list[i].set_position([left, bottom, width, height])
    
    # The affect of the above set_position can be seen by turning the axes frame on, like so:
    axes_list[i].set_frame_on(True)
    

    文档:

    【讨论】:

    • 谢谢。这与我想要的很接近,尽管我不太喜欢我最终在每个子图的顶部和底部都有的空白。这看起来仍然是一个可行的解决方案。
    • 啊,可以用fig_list[i].set_frame_on(False)去掉轴架。我已将其添加到示例中。此外,您可以将 rowLabels 和 colLabels 用于行和列的标签。
    • 这行得通。非常感谢。不过我有一个问题,你知道如何给这些表命名吗? set_title() 不适用于表格,你知道有什么方法吗?再次感谢。
    • set_title() 应该在轴实例上工作。轴文档位于matplotlib.sourceforge.net/api/…。基本上,轴是图形内部的一个区域,您可以在其中绘制艺术家(或其他对象)。通常它是一个线图或类似的,但在这种情况下它是一个表格。每个表都有自己的轴实例。 axes_list[i].set_title('test') 应该可以工作。另外,请注意set_position([left, bottom, width, height]) 命令可用于更改轴的大小,这将使标题更接近表格。
    • 太完美了!你真的帮了我。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 2011-03-11
    • 1970-01-01
    • 2016-11-08
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    相关资源
    最近更新 更多