因此,我对表格的主要问题是将其完全填入('#EEECE1')颜色并对其进行格式化,以使其周围没有白色区域。这样,我可以轻松地将其插入到ppt中。文档。没有它与边界和额外的空间看。
我有以下代码:
def tables():
data=[[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5]]
fig= plt.figure()
ax = fig.add_subplot(111)
ax.axis('off')
rows=['AB','BC','SK','MB']
cols=["Gas", "Wk/Wk", "Yr/Yr","Oil", "Wk/Wk", "Yr/Yr","Bit", "Wk/Wk", "Yr/Yr","Total", "Wk/Wk", "Yr/Yr","Hor", "Wk/Wk", "Yr/Yr","Vert/Dir", "Wk/Wk", "Yr/Yr"]
table = ax.table(cellText=data, colLabels=cols,rowLabels=rows, loc='upper center',cellLoc='center')
table.auto_set_font_size(True)
table.scale(1.5,1.5)
plt.savefig(filenameTemplate2, format='png',bbox_inches='tight')
这给了我这个:
有什么建议吗?
答案 0 :(得分:2)
您的问题似乎与轴有关。您的桌子周围有一个很大的白轴区域,而png是围绕轴而不是桌子的紧密边框创建的。删除轴背景颜色有点帮助:
ax.set_axisbgcolor((0,0,0,0))
为您提供透明图表区域。具有透明bg的点是它也应该在PPT中保持透明。另一种指定透明度的方法是在创建子图时:
add_subplot(111, axisbg='none')
然后您还必须相对于图调整轴位置,例如:
ax.set_position([0, 0, 1, 1])
填补整个数字。
创建表格时可以设置单元格颜色,但它看起来有点笨拙:
tbl=plt.table(cellText=data, cellColours=[["#EEECE1"] * len(data[0])]*len(data))
N.B。至少我的matplotlib在这里有错误,请参阅答案的结尾。
所以,沿着这些方向:
data=[[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5]]
fig = plt.figure(figsize=(6,2))
ax = fig.add_subplot(111, axisbg='none')
ax.axis('off')
ax.set_position([0, 0, 1, 1])
rows=['AB','BC','SK','MB']
cols=["Gas", "Wk/Wk", "Yr/Yr","Oil", "Wk/Wk", "Yr/Yr","Bit", "Wk/Wk", "Yr/Yr","Total", "Wk/Wk", "Yr/Yr","Hor", "Wk/Wk", "Yr/Yr","Vert/Dir", "Wk/Wk", "Yr/Yr"]
table = ax.table(cellText=data, colLabels=cols, rowLabels=rows, rowColours=['none']*len(data), colColours=['none']*len(data[0]), loc='upper center',cellLoc='center', cellColours=[["none"] * len(data[0])] * len(data))
table.auto_set_font_size(True)
table.scale(1.5, 1.5)
plt.savefig("test.png", format='png',bbox_inches='tight')
这应该会生成一个完全透明背景的表格。如果要为单元格设置背景颜色,请更改cellColours中的“无”。 Kw args rowColours
和colColours
确定列和行标签后面的颜色。如果要为整个图像设置背景,请在axisbg
的{{1}}参数中进行更改。
并警告:似乎不同版本的matplotlib在缩放方面做了一些不同的事情。
更新:工厂职能add_subplot
中的table.py
可能存在错误......如果同时定义了table
和colColors
,则单元格偏移量为0,行跳到错误的地方。
解决方法是一个丑陋的黑客,但是:
colLabels
会做的。 table = ax.table(cellText=data, colLabels=cols, rowLabels=rows, loc='upper center',cellLoc='center')
for cidx in table._cells:
table._cells[cidx].set_facecolor('none')
是一个单元格词典(构建在table._cells
类上)。同样的技巧使您可以为单元格面或边缘执行任何奇特的着色,并且dict键是单元格坐标。
答案 1 :(得分:1)
这里有一些问题:
首先是虽然你有ax.axes('off
),但这只是关闭了轴上的线条和标签的绘制,但是没有移除轴,这导致了所有的空白区域在桌子下面。为了解决这个问题,我不知道如何完全关闭轴的绘制,但是一个kludge是使得纵横比小于表,然后扩展表但是相同的比例(参见下面的示例)。
对于颜色,需要牢记:1)轴颜色和图形颜色不同(例如,在通常的gui显示中,图形颜色为灰色,轴为白色); 2)保存的图形中的图形颜色与显示的图形不同,需要直接在savefig
中设置。
最后,您可能希望在此处使用透明度,而不是您明确要求的颜色(例如,在savefig
中设置关键字transparent=True
),但这取决于您的具体情况。之后再说这个数字,以及是否支持透明度,所以我只是按你提出的方式回答关于颜色的问题。
这是图和代码:
data=[[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5],[10,10,10,5,5,5,2,2,2,4,4,4,4,4,4,5,5,5]]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.axis('off')
ax.set_aspect(.1)
rows=['AB','BC','SK','MB']
cols=["Gas", "Wk/Wk", "Yr/Yr","Oil", "Wk/Wk", "Yr/Yr","Bit", "Wk/Wk", "Yr/Yr","Total", "Wk/Wk", "Yr/Yr","Hor", "Wk/Wk", "Yr/Yr","Vert/Dir", "Wk/Wk", "Yr/Yr"]
table = ax.table(cellText=data, colLabels=cols,rowLabels=rows, loc='upper center',cellLoc='center')
table.auto_set_font_size(True)
table.scale(1.5,15.)
plt.savefig("test.png", format='png',bbox_inches='tight', facecolor='#EEECE1', transparent=True)
答案 2 :(得分:0)
您可以尝试:.set_backgroundcolor('#EEECE1')
您可能需要将其设置在桌子,斧头或无花果上。