Python 如何在Matplotlib中的绘图上放置表格?
我没有成功地让matplotlib表命令工作。下面是我想做的一个例子: 有人能帮助我们理解表的构造代码吗Python 如何在Matplotlib中的绘图上放置表格?,python,matplotlib,Python,Matplotlib,我没有成功地让matplotlib表命令工作。下面是我想做的一个例子: 有人能帮助我们理解表的构造代码吗 import pylab as plt plt.figure() ax=plt.gca() y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1] plt.plot([10,10,14,14,10],[2,4,4,2,2],'r') col_labels=['col1','col2','col3'] row_labels=['row1','row2','row3'] tab
import pylab as plt
plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[11,12,13,21,22,23,31,32,33]
# the rectangle is where I want to place the table
plt.text(11,4.1,'Table Title',size=8)
plt.plot(y)
plt.show()
另外,您不能仅使用本机matplotlib
功能在matplotlib
绘图上任意放置表格。你能做的就是利用这种可能性。然而,为了做到这一点,您的系统中应该有一个工作latex
环境。如果您有一个,您应该能够生成如下图形:
import pylab as plt
import matplotlib as mpl
mpl.rc('text', usetex=True)
plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
#plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[11,12,13,21,22,23,31,32,33]
table = r'''\begin{tabular}{ c | c | c | c } & col1 & col2 & col3 \\\hline row1 & 11 & 12 & 13 \\\hline row2 & 21 & 22 & 23 \\\hline row3 & 31 & 32 & 33 \end{tabular}'''
plt.text(9,3.4,table,size=12)
plt.plot(y)
plt.show()
结果是:
请记住,这是一个快速而肮脏的例子;您应该能够通过使用文本坐标正确放置表格。如果您需要更改字体等,请参阅
更新:更多关于pyplot.table
根据,plt.table
向当前轴添加一个表。从资料中可以明显看出,图表上的表格位置是根据轴确定的<代码>Y坐标可以通过关键字顶部
(上图)、上部
(上半部分)、中部
(中半部分)、下部
(下半部分)和底部
(下图)进行控制X
坐标由关键字left
和right
控制。这两个作品的任意组合,例如左上
、右中
和下
都可以使用
因此,可以使用以下工具制作最接近您所需的图形:
import matplotlib.pylab as plt
plt.figure()
ax=plt.gca()
y=[1,2,3,4,5,4,3,2,1,1,1,1,1,1,1,1]
#plt.plot([10,10,14,14,10],[2,4,4,2,2],'r')
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[[11,12,13],[21,22,23],[31,32,33]]
# the rectangle is where I want to place the table
the_table = plt.table(cellText=table_vals,
colWidths = [0.1]*3,
rowLabels=row_labels,
colLabels=col_labels,
loc='center right')
plt.text(12,3.4,'Table Title',size=8)
plt.plot(y)
plt.show()
这给了你
希望这有帮助 我不确定前面的答案是否满足您的问题,我也在寻找一种向绘图中添加表格的方法,并找到了克服“loc”限制的可能性。可以使用边界框控制表格的确切位置(这仅包含表格创建,但应该足够了): 结果是(我没有发布图片的名声,所以这里有一个链接):
请注意,bbox单位是标准化的(不在绘图比例中)。您是否尝试过查看示例?或者您甚至可以做一些事情,但您没有注释,而是有一个表。是的,我看到了这个示例。当我尝试使用代码时,我无法指定行的颜色和位置。我也找不到任何关于调用语法或类型的文档帮助。至于注释,我相信有更多的控件指定第二个轴来绘制表格。感谢Andrey,这确实为这个问题提供了一个可行的解决方案。但是,我在matplotlib中找不到pyplot.table或matplotlib.table.table功能的任何讨论/文档。我希望看到有人明确地解决表格问题。如果您想查看pyplot.Table的更多信息,请查看更新。谢谢Andrey!您不仅清楚完整地回答了这个问题,而且我完全错过了matplotlib.pyplot.table文档。谢谢你明确的回答和指导。嗨,安德烈,我想知道是否有可能把桌子从轴上拖出来?谢谢!loc的所有可用值都不能满足我的要求,但我找到了一个解决方法:添加一个子图并将表格绘制到该图,然后将子图设置为不可见。因为我可以重新定位子图,这意味着我可以在任何地方找到表。在撰写本文时,链接已断开。
tbl = ax1.table(
cellText=[["a"], ["b"]],
colWidths=[0.25, 0.25],
rowLabels=[u"DATA", u"WERSJA"],
loc="bottom", bbox=[0.25, -0.5, 0.5, 0.3])
self.ui.main_plot.figure.subplots_adjust(bottom=0.4)