我想做一个两部分的图形。在左边,我想要一个可视化(我已经知道如何制作)。在图表的右边,我想包含更多的数据。假设我用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')
这让我:
我有两个问题。1) 太可怕了。2) 如果我想把行标签和列标签移植到这个结构上,我必须做大量的数组粘合。我想应该有更好的办法。在
编辑:理想情况下,右边的表部分看起来就像tabledf
的默认Pandas HTML表示:
当然,用HTML和
matplotlib
没有简单的方法来实现。但是,你应该可以使用乳胶。在创建:
当然,您可以也应该使用一些简单的代码从数据生成表。一旦你掌握了它们的构造方式,乳胶表就相当灵活了。在
要使上述解决方案工作,您需要在您的机器中有一个配置良好的乳胶发行版。在
相关问题 更多 >
编程相关推荐