Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Matplotlib中的绘图上放置表格?_Python_Matplotlib - Fatal编程技术网

Python 如何在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

我没有成功地让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']
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)