0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ひとりアドベント(グラフ電卓,関数電卓,Python)Advent Calendar 2024

Day 7

matplotlibのtableのセル余白を調整する

Last updated at Posted at 2024-12-06

セル余白がセル幅に比例してしまう

FDAの運航情報のうち、備考情報のみを抽出して画像化を行った。
matplotlibのtableのセル幅を個別に設定すると、セル余白はセル幅に比例してしまい、幅の広いセルの余白が大きくなってしまう。
matplotlib_table_1.png

セル余白の設定(公式ドキュメントから)

セル余白の設定は 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)

PADの値を微調整することで、以下のようにセル余白がほぼ均一の表を作ることができた。
matplotlib_table_2.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?