我需要在matplotlib中绘制一个表。问题是有些列有一级标题,有些列有二级标题。
我需要的是:
下面是一级标题的简单示例:
df = pd.DataFrame()
df['Animal'] = ['Cow', 'Bear']
df['Weight'] = [250, 450]
df['Favorite'] = ['Grass', 'Honey']
df['Least Favorite'] = ['Meat', 'Leaves']
df
fig = plt.figure(figsize=(9,2))
ax=plt.subplot(111)
ax.axis('off')
table = ax.table(cellText=df.values, colColours=['grey']*df.shape[1], bbox=[0, 0, 1, 1], colLabels=df.columns)
plt.savefig('Table.jpg')
最后一段代码生成下一张图片:
我需要做哪些更改才能拥有所需的表?
5条答案
按热度按时间nc1teljy1#
细胞合并液
您可以合并
ax.table
生成的单元格,这是Excel电子表格中的单元格合并函数。这是一个完全自动化的解决方案,您不需要摆弄任何坐标(保存要合并的单元格的索引):输出量:
下面是上面使用的
mergecells
函数的代码:wpx232ag2#
除了@tel的答案,我还对他的代码做了一些修改,以解决我自己的问题--合并两个以上的单元格。
bpzcxfmw3#
还有一种选择是利用
matplotlib.gridspec.GridSpec
使用自定义布局来绘制值和列:结果
k5hmc34c4#
我想唯一的方法是手动添加头文件。你可以用
bbox
参数控制它们的确切位置和大小。请看下面的例子。你可以从这个答案中得到更多的细节:https://stackoverflow.com/a/37440236/2912478下面是我得到的输出:
6rvt4ljy5#
除了@olenscki的答案,这里还有一个关于单元格背景颜色的技巧。
正如@user1185790和@Jorge所说,如果合并单元格,
cell.set_facecolor()
将无法正常工作。您可以通过如下方式覆盖背景表格来避免这种情况。