您的問題似乎與軸。你的桌子周圍有一個很大的白色軸線區域,並且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))
注:至少我的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中的「none」。 Kw args rowColours
和colColours
確定列和行標籤後面的顏色。如果要爲整個圖像設置背景,請在add_subplot
的參數axisbg
中對其進行更改。
並被警告:似乎matplotlib的不同版本與縮放有點不同。
UPDATE:有可能在table.py
工廠功能table
一個bug ......看來,如果兩個colColors
和colLabels
定義,單元偏移爲0,行跳轉到一個錯誤的地方。
的解決方法是一個醜陋的黑客攻擊,但是:
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
是一個單元字典(它建立在Rectangle
類上)。同樣的技巧可以讓你爲單元格表面或邊緣做任何奇特的着色,並且字典鍵是單元格座標。
剛纔嘗試設置行/列的寬度。在表格中做這些的語法是什麼? – carevans88