如何在 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']
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()
I'm not having any success in getting the matplotlib table commands to work. Here's an example of what I'd like to do:
Can anyone help with the table construction code?
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()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
AFAIK,您不能仅使用本机
matplotlib
功能在matplotlib
绘图上任意放置表格。您可以做的是利用latex
文本渲染的可能性。然而,为了做到这一点,您的系统中应该有工作latex
环境。如果你有的话,你应该能够生成如下图:结果是:
请采取请记住,这是一个快速而肮脏的例子;您应该能够通过使用文本坐标来正确放置表格。如果您需要更改字体等,另请参阅文档。
更新:有关
的更多信息pyplot.table
根据文档,
plt.表
将表格添加到当前轴。从来源来看,很明显,图表上的表格位置是根据轴确定的。Y
坐标可以通过关键字top
(上图)、upper
(上半部分)、center
进行控制(在中心)、lower
(在下半部分)和bottom
(下图)。X
坐标由关键字left
和right
控制。两种作品的任意组合,例如top left
、center right
和bottom
都可以使用。因此,可以使用以下方法制作最接近您想要的图表:
这将为您提供
希望这会有所帮助!
AFAIK, you can't arbitrarily place a table on the
matplotlib
plot using only nativematplotlib
features. What you can do is take advantage of the possibility oflatex
text rendering. However, in order to do this you should have workinglatex
environment in your system. If you have one, you should be able to produce graphs such as below:The result is:
Please take in mind that this is quick'n'dirty example; you should be able to place the table correctly by playing with text coordinates. Please also refer to the docs if you need to change fonts etc.
UPDATE: more on
pyplot.table
According to the documentation,
plt.table
adds a table to current axes. From sources it's obvious, that table location on the graph is determined in relation to axes.Y
coordinate can be controlled with keywordstop
(above graph),upper
(in the upper half),center
(in the center),lower
(in the lower half) andbottom
(below graph).X
coordinate is controlled with keywordsleft
andright
. Any combination of the two works, e.g. any oftop left
,center right
andbottom
is OK to use.So the closest graph to what you want could be made with:
And this gives you
Hope this helps!
我不确定以前的答案是否满足您的问题,我也在寻找一种向绘图添加表格的方法,并发现了克服“loc”限制的可能性。您可以使用边界框来控制表格的确切位置(这仅包含表格创建,但应该足够了):
结果是(我没有发布图像的声誉,所以这里是一个链接): http://www.viresco.pl/media/test.png。
请注意,bbox 单位已标准化(不在绘图比例中)。
I'm not sure if the previous answers satisfies your question, I was also looking for a way of adding a table to the plot and found the possibility to overcome the "loc" limitation. You can use bounding box to control the exact position of the table (this only contains the table creation but should be enough):
And the result is (I don't have the reputation to post images so here is a link): http://www.viresco.pl/media/test.png.
Note that the bbox units are normalized (not in plot scale).