2012-06-26 32 views
0

我正在尋找一種方法來創建包含幾個表格的子圖的圖形。讓我試着解釋我在說什麼。下面是一個圖,有幾個子圖是imshow圖。我想要的是完全相同的圖形,但不是`imshow'圖表,我想要表格,只是普通的表格。在我的示例中,它們只顯示值1和2:pylab中的表格的子圖

[1, 2] 
[2, 1] 

我應該怎麼做?

預先感謝您

enter image description here

這裏是我用來生成圖表的代碼。

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() 

回答

2

您可以使用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) 

文檔:

+0

感謝。這與我所尋找的接近,但我並不真正喜歡我在每個子場地上下都有的空白空間。這仍然是一個可行的解決方案。 – Akavall

+0

啊,你可以用'fig_list [i] .set_frame_on(False)'去除軸框架。我已經添加了這個例子。此外,您可以使用rowLabels和colLabels作爲行和列的標籤。 – stanri

+0

這工作。非常感謝。我有一個問題,但你知道如何給這些表的標題嗎? 'set_title()'不適用於表格,你知道有什麼方法可以做到嗎?再次感謝。 – Akavall