向matplotlib轴(HTML?)添加看起来合理的表格

2024-04-27 04:02:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个两部分的图形。在左边,我想要一个可视化(我已经知道如何制作)。在图表的右边,我想包含更多的数据。假设我用axes[0]为可视化而设置,axes[1]作为我想要的表的位置。在

我用的是Pandas,我有我想要的所有信息在一个漂亮的整洁的DataFrame。(现在,让我们假设DataFrame在行和列上都有一个正则的Index,而不是MultiIndex,但是我很好奇如果我们放弃了这个假设,答案会如何变化。)让我们称之为tabledf。在

tabledf并在axes[1]上绘制它最简单的方法是什么?特别是,如果它看起来像tabledf的HTML表示,那就太好了。有没有办法在matplotlib轴上绘制HTML表格?在

我当然可以这样做:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

np.random.seed(1)

tabledf = pd.DataFrame(data=np.random.randn(5,3),
                       index=list('abcde'),
                       columns=list('xyz'))



fig, axes = plt.subplots(1, 2, figsize=(20, 5))
x = np.linspace(0, 2*np.pi, 100)
axes[0].plot(x, np.sin(x))
axes[1].axis('off')
axes[1].table(cellText=tabledf.values, loc='center')

这让我: enter image description here

我有两个问题。1) 太可怕了。2) 如果我想把行标签和列标签移植到这个结构上,我必须做大量的数组粘合。我想应该有更好的办法。在


编辑:理想情况下,右边的表部分看起来就像tabledf的默认Pandas HTML表示:

enter image description here


Tags: importdataframepandasmatplotlib可视化htmlasnp
1条回答
网友
1楼 · 发布于 2024-04-27 04:02:19

当然,用HTML和matplotlib没有简单的方法来实现。但是,你应该可以使用乳胶。在

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams["text.usetex"] = True
mpl.rcParams["text.latex.preamble"].append(r'\usepackage{tabularx}')

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot([0,1], [1,0])

ax.text(.5, .5, r'''\begin{tabular}{ | l | l | l | l | } \hline & x & y & z \\\hline a & 1.62 & -0.61 & -0.528 \\\hline \end{tabular}''')

创建:

enter image description here

当然,您可以也应该使用一些简单的代码从数据生成表。一旦你掌握了它们的构造方式,乳胶表就相当灵活了。在

要使上述解决方案工作,您需要在您的机器中有一个配置良好的乳胶发行版。在

相关问题 更多 >