Matplotlib 在python中将矩阵绘制为表

Matplotlib 在python中将矩阵绘制为表,matplotlib,ipython-notebook,Matplotlib,Ipython Notebook,我试图用python生成一个数据矩阵,并希望将其绘制为一个表。 从IPython中,我发现了一个显示api,它可以将矩阵显示为表。但我还是喜欢: 1.删除行索引列和列索引行。 2.数据网格应该平均分割 我正在考虑matplotlib,但不确定如何做。我希望用相同的脚本来做,所以不需要到处粘贴它 %matplotlib inline import numpy as np import pandas as pd from IPython.display import display, HTML im

我试图用python生成一个数据矩阵,并希望将其绘制为一个表。 从IPython中,我发现了一个显示api,它可以将矩阵显示为表。但我还是喜欢: 1.删除行索引列和列索引行。 2.数据网格应该平均分割

我正在考虑matplotlib,但不确定如何做。我希望用相同的脚本来做,所以不需要到处粘贴它

%matplotlib inline
import numpy as np
import pandas as pd
from IPython.display import display, HTML
import matplotlib.pyplot as plt
print pd.__version__

row = 6
col = row
matrix = np.zeros((row, col))
for i in range(row):
    for j in range(col):
        if i == 0:
            matrix[i][j] = 1
        else:
            matrix[i][j] = matrix[i-1][j] + matrix[i][j-1]
df = pd.DataFrame(matrix)
display(df)
电流输出为:

更新 根据Brat的评论,我已经更新了我的参考代码:

%matplotlib inline
import numpy as np
import pandas as pd
from IPython.display import display, HTML
import matplotlib.pyplot as plt

row = 7
col = row
matrix = np.zeros((row, col))
matrix = matrix.astype(int)
for i in range(row):
    for j in range(col):
        if i == 0:
            matrix[i][j] = 1
        else:
            matrix[i][j] = matrix[i-1][j] + matrix[i][j-1]
df = pd.DataFrame(matrix)
#display(df)

w = 5
h = 5
plt.figure(1, figsize=(w, h))
tb = plt.table(cellText=matrix, loc=(0,0), cellLoc='center')

tc = tb.properties()['child_artists']
for cell in tc: 
    cell.set_height(1.0/row)
    cell.set_width(1.0/col)

ax = plt.gca()
ax.set_xticks([])
ax.set_yticks([])

plt.show()
输出为气泡:


< /P> < P>使用MatpTLIB,您可以考虑使用<代码>表< /> >,例如:

import numpy as np
import matplotlib.pylab as pl

nx = 4
ny = 5
data = np.random.randint(0,10,size=(ny,nx))

pl.figure()
tb = pl.table(cellText=data, loc=(0,0), cellLoc='center')

tc = tb.properties()['child_artists']
for cell in tc: 
    cell.set_height(1/ny)
    cell.set_width(1/nx)

ax = pl.gca()
ax.set_xticks([])
ax.set_yticks([])

请问,“数据网格应该平均分割”是什么意思?谢谢,它可以工作,但数字显示为float,例如1将打印为1.0。这很奇怪,您使用的是哪种Python/matplotlib版本?至少在我的matplotlib版本(1.9.2)中,
matplotlib.text
cellText
转换为标签
'%s'(s,)
,使用
s
cellText
传递原始值(字符串、int、float,…),因此当我从
randint
传递
numpy.int64
时,它被格式化为整数,不是浮子。只有当我将
数据
转换为例如
np.float64
时,我才能在表中打印出十进制数字。哦,我现在知道怎么了。我需要将矩阵转换为整数(matrix=matrix.astype(int)”。