据我所知,仅使用原生的
matplotlib
功能无法任意地将表格放置在图表上。你可以利用
LaTeX
文本渲染的可能性来实现这一点。但是,在此之前,您需要在系统中安装可用的
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]
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()
结果如下:
![enter image description here](https://istack.dev59.com/QZ4Hx.webp)
请注意,这只是一个快速且简单的示例;您应该可以通过调整文本坐标来正确放置表格。如果需要更改字体等,请参阅文档。
更新:有关pyplot.table
的更多信息
根据文档,plt.table
可将表格添加到当前轴。从源代码中可以看出,表格在图表上的位置是相对于轴确定的。Y
坐标可以使用关键字 top
(在图表上方)、upper
(在上半部分)、center
(在中心)、lower
(在下半部分)和 bottom
(在图表下方)进行控制。X
坐标可以使用关键字 left
和 right
进行控制。两者的任意组合都可以使用,例如top left
、center right
和 bottom
等均可使用。
因此,最接近您想要的图表可以采用以下方式制作:
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]
col_labels=['col1','col2','col3']
row_labels=['row1','row2','row3']
table_vals=[[11,12,13],[21,22,23],[31,32,33]]
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()
这样做会给你以下结果:
![在此输入图片描述](https://istack.dev59.com/FSoqz.webp)
希望能对你有所帮助!