yuuho.wiki

カオスの欠片を集めて知恵の泉を作る

ユーザ用ツール

サイト用ツール


tips:python:matplotlib:start

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
tips:python:matplotlib:start [2022/06/08 00:38] – [折れ線グラフ] yuuhotips:python:matplotlib:start [2025/08/28 12:55] (現在) – [消す系] yuuho
行 2: 行 2:
 matplotlibはpythonでグラフを描画できるパッケージである.\\ matplotlibはpythonでグラフを描画できるパッケージである.\\
  
-''matplotlib.pyplot''モジュールを利用するのが一般的. +  * ''matplotlib.pyplot''モジュールを利用するのが一般的.この場合は <code python>import matplotlib.pyplot as plt</code>でimportする. 
-<code python>import matplotlib.pyplot as plt</code>でimportする.+  * 私の推奨は Fiture を使うもの。 <code python>from matplotlib.figure import Figure</code>
  
 pyplotモジュールを直接操作して手続き的に図を作成していく方法もあるが, pyplotモジュールを直接操作して手続き的に図を作成していく方法もあるが,
行 107: 行 107:
 ^ ^^^ ^ ^^^
 | ''plt.subplots_adjust()'' | ''fig.subplots_adjust()'' | 余白の調整 | | ''plt.subplots_adjust()'' | ''fig.subplots_adjust()'' | 余白の調整 |
 +|  | ''fig.savefig('hoge.pdf')'' | 図の保存 |
  
 === 凡例(legend)の配置 === === 凡例(legend)の配置 ===
行 119: 行 120:
 ^ 変数 ^ 意味 ^ 初期値 | ^ 変数 ^ 意味 ^ 初期値 |
 | ''left'' | 左 | 0.125 | | ''left'' | 左 | 0.125 |
-| ''right'' | 右 | 0.9 | 
 | ''bottom'' | 下 | 0.1 | | ''bottom'' | 下 | 0.1 |
 | ''top'' | 上 | 0.9 | | ''top'' | 上 | 0.9 |
 +| ''right'' | 右 | 0.9 |
 | ''wspace'' | 図同士の間(幅) | 0.2 | | ''wspace'' | 図同士の間(幅) | 0.2 |
 | ''hspace'' | 図同士の間(高さ) | 0.2 | | ''hspace'' | 図同士の間(高さ) | 0.2 |
行 234: 行 235:
   * ''.bar''   * ''.bar''
   * ''.pie''   * ''.pie''
 +    * <code python>ax.pie(data, colors=colors, startangle=90, counterclock=False)</code>
  
 ===== カラーマップの自作 ===== ===== カラーマップの自作 =====
行 282: 行 284:
  
 memo : ''SakuData/config/cvpr/figure/maskgen_fig.py'' memo : ''SakuData/config/cvpr/figure/maskgen_fig.py''
 +
 +
 +
 +===== 文字の描画 =====
 +
 +==== 軸目盛の削除 ====
 +目盛りの文字を削除するのには
 +<code python>
 +ax.get_xaxis().set_ticks([])
 +</code>
 +を使う。
 +必要に応じて ''.annotate()'' を使うのが良い。
 +
 +
 +==== 描画 ====
 +
 +<code python>
 +ax.annotate('your text',
 +    xy=(0.5, 0.5),               # 座標
 +    xycoords='axes fraction',    # 座標の考え方
 +    ha='right',                  # 座標アンカー位置をテキストボックスのどこにするか、横
 +    va='bottom',                 # 座標アンカー位置をテキストボックスのどこにするか、縦
 +    fontsize=9,                  # テキストのフォントサイズ
 +    rotation=40,                 # テキストボックスの回転角度(度)
 +    rotation_mode='anchor'       # テキストボックス回転の中心
 +    annotation_clip=False        # ax の箱外にいるときに描画されない設定を消す
 +)
 +</code>
 +
 +  * xycoords
 +    * ''axes fraction''   : ax を 横=0~1, 縦=0~1 とみなしたときの座標
 +    * ''data''            : ax のデータの座標系での位置
 +    * ''figure fraction'' : fig を 横=0~1, 縦=0~1 とみなしたときの座標
 +  * 
 +
 +
 +===== グリッドベースレイアウト =====
 +
 +  * 参考: https://github.com/yuuho/ccldataset/blob/2f6bac605bb1745bbe42d6267dae9514dd924516/projects/old_torch_ccl/torch_gpu_ccl/video_writer.py#L414
 +    * gridspec, grid_spec
 +
 +<code python>
 +spec = fig.add_gridspec()
 +
 +ax = spec[:, :]
 +</code>
 +
 +<code python>
 +        gridH = 12
 +        gridW = 8
 +        #    0     1 2            3 4    5 6 7    8
 +        #  0 |^^^^^| |^^^^^^^^^^^^| |^^^^| | |^^^^|
 +        #  1 |     | |            | |    | | |    |
 +        #  2 |     | |            | |vvvv| | |    |
 +        #  3 |vvvvv| |            | |^^^^| | |vvvv|
 +        #  4 |^^^^^| |            | |    | | |^^^^|
 +        #  5 |     | |            | |vvvv| | |    |
 +        #  6 |     | |            | |^^^^| | |    |
 +        #  7 |vvvvv| |            | |    | | |vvvv|
 +        #  8 |^^^^^| |            | |vvvv| |^^^^^^|
 +        #  9 |     | |            | |^^^^| |      |
 +        # 10 |     | |            | |    | |      |
 +        # 11 |vvvvv| |vvvvvvvvvvvv| |vvvv| |vvvvvv|
 +        w_img = 1       # セグメンテーション画像の幅
 +        w_lin = 0.78    # セグメンテーション画像とヒストグラムの隙間
 +        w_his = 5       # ヒストグラムの幅
 +        w_ma1 = 0.05    # ヒストグラムとサンプリング画像の隙間
 +        w_fet = 0.7     # サンプリング画像の幅
 +        w_ma2 = 0.1     # サンプリング画像と出力画像の隙間
 +        w_ma3 = 0.2     # グラフ左と出力画像左の隙間
 +        w_gra = 1       # グラフ幅
 +        width_ratios = [w_img, w_lin, w_his, w_ma1, w_fet, w_ma2, w_ma3, w_gra]
 +</code>
 +
 +===== 消す系 =====
 +
 +=== 図の枠線 ===
 +<code python>
 +ax.spines['left'].set_visible(False)
 +ax.spines['right'].set_visible(False)
 +ax.spines['top'].set_visible(False)
 +ax.spines['bottom'].set_visible(False)
 +</code>
 +
 +=== 図の目盛り ===
 +
 +<code python>
 +ax.set_xticks([])
 +ax.set_yticks([])
 +</code>
 +
 +=== 図の背景 ===
 +
 +<code python>
 +ax.patch.set_facecolor('none')
 +fig.patch.set_facecolor('none')
 +</code>
 +===== 日本語フォント =====
 +
 +=== Ubuntu でのフォントディレクトリ ===
 +
 +  * ''/usr/share/fonts''
 +
 +**メイリオ(meiryo)を使いたい場合** は Windows から引っこ抜いてくるのが良さそう。
 +  * ''C:%%\%%\Windows\Fonts'' にある ''.ttc'' ファイルは使えそう。
 +  * WSL で言うところの ''/mnt/c/Windows/Fonts''
 +  * メイリオは以下二つ
 +    * ''/mnt/c/Windows/Fonts/meiryo.ttc''
 +    * ''/mnt/c/Windows/Fonts/meiryob.ttc''
 +  * <code bash>mkdir /usr/share/fonts/meiryo</code>
 +
 +
 +=== フォントの設定やフォントをアウトライン化して出力する設定 ===
 +
 +<code python>
 +from matplotlib import rcParams
 +rcParams['font.family'] = 'sans-serif'
 +rcParams['font.sans-serif'] = ['Noto Sans CJK JP']
 +rcParams['svg.fonttype'] = 'path'
 +</code>
 +
 +=== フォントの確認 ===
 +<code python>
 +import matplotlib.font_manager as fm
 +
 +fonts = set([fm.FontProperties(fname=font).get_name() for font in fm.findSystemFonts()])
 +</code>
  
tips/python/matplotlib/start.1654648732.txt.gz · 最終更新: 2022/06/08 00:38 by yuuho