我在matplotlib中创建了一个表,但是表头是很长的字符串,表值是只有几位数的数字。这给我留下了两个糟糕的选择:我的表格比需要的宽很多,或者我的标题重叠了。为了解决这个问题,我想旋转表格标题(可能高达90度)。换句话说,我想在python中执行this
下面是我的简化代码:
import matplotlib, numpy
import matplotlib.pyplot as plt
data=numpy.array([[1, 2],[3,4]])
headings=['long heading 1', 'long heading 2']
fig=plt.figure(figsize=(5,2))
ax=fig.add_subplot(111, frameon=False, xticks=[], yticks=[])
the_table = plt.table(cellText=data, rowLabels=headings, colLabels=headings, colWidths=[0.3]*data.shape[1], loc='center') #0.3 for second image, 0.03 for first
#the_table.auto_set_font_size(False) #comment out for second image
#the_table.set_fontsize(10) #comment out for second image
the_table.scale(1, 1.6)
plt.show()
这会产生压扁的图像或超宽的图像(如下所示)。在我的实际代码中,表格是~30 x 30,所以单元格不能太宽。有人知道如何旋转列标题来解决这个间距问题吗?x1c 0d1xx 1c 1d 1x
3条答案
按热度按时间mkshixfv1#
我想出来了。它不漂亮,但很好用。我为每列添加了两个注解-文本和一条线将其与下一列标题分隔开。我必须定义一些适用于表格和花哨标签(宽度、高度、列宽)的参数,以及一些使花哨标签正确排列的参数。这个解决方案在我的30 x30表格上运行良好。
m528fe3b2#
我找到了另一个解决办法:
第一个循环用于遍历所有单元格,第二个循环用于选取第一行/标题。
这将选择第一列,您可能也想旋转它。
然后您可以旋转单元格文本,例如90 °。
l2osamch3#
以下内容对我很有效。
创建表
现在添加列标题。注意我的表没有行标签,您可能需要调整startX的位置