Matplotlib 在python中将矩阵绘制为表
我试图用python生成一个数据矩阵,并希望将其绘制为一个表。 从IPython中,我发现了一个显示api,它可以将矩阵显示为表。但我还是喜欢: 1.删除行索引列和列索引行。 2.数据网格应该平均分割 我正在考虑matplotlib,但不确定如何做。我希望用相同的脚本来做,所以不需要到处粘贴它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
%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)”。