セル余白がセル幅に比例してしまう
FDAの運航情報のうち、備考情報のみを抽出して画像化を行った。
matplotlibのtableのセル幅を個別に設定すると、セル余白はセル幅に比例してしまい、幅の広いセルの余白が大きくなってしまう。
セル余白の設定(公式ドキュメントから)
セル余白の設定は PAD
に値を入れることで行える。デフォルトは 0.1 (相対値)。
このPADの指定は、table関数の引数としては取れない。
最初はPythonスクリプト内で設定する方法がわからず、ライブラリ内のファイルを直接いじってごまかした。さすがによろしくないので色々調べた結果、以下の方法で指定できることがわかった。
セル単位でセル余白を設定する方法
table._cell[行番号, 列番号].PAD
に設定したい余白(相対値)を入れるとよい。
table描画部(抜粋)
now = datetime.datetime.now()
table_list = ['flight', 'fleet', 'fromdest', 'notes']
columns_list_j = ['便名', '機', '出発予定 - 到着予定', '備考']
nowstr = now.strftime('%Y/%m/%d %H:%M')
title = '備考情報 (' + nowstr + '現在)'
plt.rcParams['font.family'] = "IPAPGothic"
plt.rcParams["font.size"] = 7
fig, ax = plt.subplots(figsize=(8, 4.5))
plt.subplots_adjust(left=0.1, right=0.9, bottom=0.03, top=0.93)
ax.axis('off')
table = ax.table(cellText=df_notes[table_list].values,
colLabels=columns_list_j,
loc='center',
cellLoc='left',
colWidths=[0.1,0.03,0.23,1.18],
)
table.auto_set_font_size(False)
table.set_fontsize(8)
table.scale(0.8, 1.2)
for row in range(len(df_notes)):
table._cells[row+1, 0].PAD = 0.01
table._cells[row+1, 1].PAD = 0.02
table._cells[row+1, 2].PAD = 0.01
table._cells[row+1, 3].PAD = 0.003
ax.set_title(title)
plt.savefig(filename_img, format="png", dpi=300)