出力と再現スクリプト

ClimCanvas v1.02.1 対応

描いた図を画像・動画・Python スクリプトとして書き出す方法を説明します。出力の操作はメイン領域の図の下にあり、アニメーションの設定だけはサイドバーの「時刻」の節にあります。

静止画の保存

メイン領域の「画像出力」の項目です。

項目 内容 既定
出力形式 PNG / JPG / TIFF / SVG / PDF / EPS PNG
解像度 (dpi) 150 / 300 / 600。ベクター形式 (SVG / PDF / EPS) ではラスタライズされる要素にだけ効く 300
出力ファイル名 拡張子は出力形式に合わせて付け替える figure.png
背景 白 (既定) / 色を指定 / 透明。プロット枠の外側の余白の背景で、プレビューには反映されない 白
余白を切り詰める (bbox_inches="tight") 図の周りの余白を切り詰める オン
画像出力と再現スクリプト
メイン領域の「画像出力」と「再現スクリプト」。

時刻送りアニメーション

水平断面図、鉛直断面図、1次元プロットで、サイドバーの「時刻」→「アニメーション表示」から作ります。時間断面図は時刻が軸なので対象外です。

項目 内容 既定
開始時刻 / 終了時刻 先頭 / 末尾
ステップ (n個ごと) 1〜100 1
fps (frame/秒) 1〜10 4
解像度 (dpi) 各フレームの解像度 (50〜400)。画素数 = Figure サイズ × dpi 100
ファイル形式 GIF / MP4。MP4 は ffmpeg が見つかるときだけ出る GIF
アニメーション表示
「時刻」→「アニメーション表示」。

地球の回転アニメーション

投影法が Orthographic で、図が単一パネルのときだけ「動かすもの」が出ます。

再現スクリプト

設計

再現スクリプトは xarray、numpy、matplotlib、cartopy だけに依存する自己完結の Python コードで、ClimCanvas が無い環境でも実行と手直しができます。アプリ内の描画と生成スクリプトの描画は同じ環境で画像が一致するようにテストされています。例外は外部カラーマップで、cmocean / cmcrameri / cmaps のカラーマップを使ったときだけ、そのパッケージの import が入ります。

生成スクリプトの構成

メイン領域の「再現スクリプト」で「netCDFパスの形式」(絶対パス / 相対パス)、「savefig を含める」「plt.show() を含める」(ともに既定オン) を選び、「スクリプトをダウンロード」で保存します。ファイル名は出力ファイル名の拡張子を .py に変えたものです。中身は図の直下の「生成されるスクリプトを表示」で確認できます。相対パスはアプリを起動したディレクトリが基準です。

スクリプトは上から次の順に並びます。

  1. 1 行の説明 (生成した ClimCanvas の版)。
  2. 必要な import だけ (matplotlib、numpy、xarray、cartopy など)。
  3. 外部カラーマップの import、カスタムカラーマップの登録、埋め込み関数 (必要なときだけ)。
  4. ds0 = xr.open_dataset(...) などのデータ読み込み。暦の変換、座標ファイルの結び付け、次元名の揃えも同じ内容が書き出されます。
  5. Figure の作成、パネルごとの axes とレイヤーの描画、カラーバー、注記。
  6. fig.savefig(...) と plt.show()。savefig の引数には「画像出力」の形式・解像度・背景・余白の設定がそのまま入ります。
生成されるスクリプト
「生成されるスクリプトを表示」を開いたところ (塗りつぶし 1 層の例)。
$ python figure.py

実行すると同じディレクトリに図のファイルができます。パネルごとの描画は独立したブロックなので、ブロック単位で削除やコピーができます。手で直す典型的な箇所は、データのパス、savefig の出力名と dpi、figsize、各描画呼び出しの引数です。

別のマシンで実行するとき

フォントは環境依存で、同じフォントが無ければ matplotlib の既定に戻ります。1:50m / 1:10m の地理データは初回に cartopy が ダウンロードします。netCDF の読み込みには netCDF4 などの xarray のバックエンドが必要です。

外部カラーマップとカスタムカラーマップ

アニメーションの再現スクリプト

「アニメーション表示」→「再現スクリプト」→「アニメーション再現スクリプトをダウンロード」で animation.py を保存します。描画本文をコマのループで包んだ形で、時刻の一覧 (回転では中心経度・緯度の一覧) がリテラルで書かれています。GIF では Pillow、MP4 では ffmpeg を使うので、実行環境に必要です。netCDF のパスは常に絶対パスです。

セッション

保存と復元の操作は基本操作、保存先のディレクトリは使い方にあります。ここでは中身と注意点をまとめます。

プリセット

プリセットは、データに依存しない好みの設定を ~/.climcanvas/preset.json に保存し、次回の起動時に自動で適用する仕組みです。保存と削除はサイドバーの「保存」→「プリセット」で行います (基本操作)。

場所 保存される設定
サイドバー上部「言語 / Language」 表示言語
図全体の書式 → フォント フォントを指定するか、選び方、フォント
図の下「画像出力」 出力形式、解像度 (dpi)、出力ファイル名、背景 (白・色を指定・透明) と背景色、余白を切り詰める
図の下「再現スクリプト」 netCDF パスの形式、savefig を含める、plt.show() を含める
地図・グリッド線 → 地図の設定 (水平断面図) 海岸線 (表示・太さ・色)、国境線の表示、陸域 (塗りつぶし・色・データの上に描く)、海域 (塗りつぶし・色)、図の枠線の太さ
地図・グリッド線 → 緯度経度線の設定 表示、線 (表示・太さ・色・線種)、経度線と緯度線の間隔、ラベル (表示・表示する辺・円周沿いと極の経度ラベル・緯度ラベルの縁・間隔・開始位置・回転・文字サイズ・距離)
地図・グリッド線 → ティックマークの設定 表示、経度と緯度の間隔、長さ、太さ、向き、表示する辺、短いティック (追加・間隔・長さ・太さ)
図枠 上下左右の枠線の表示、枠線の太さ、枠線の色
文字サイズ タイトル文字サイズ (文字・記号 → タイトル)、軸ラベルの文字サイズ (ラベル)、目盛り文字サイズ (目盛)
時刻を表示 プロット上部に時刻を表示、位置、時刻の書式
アニメーション表示 fps、解像度 (dpi)、ファイル形式
カラーマップ (塗りつぶし・等値線・ベクトル・流線・散布図 (点)・トラック・hexbin・2 次元ヒストグラム・バブルチャート・ヒートマップ) カラーマップの分類と名前、カラーマップを反転、カラーレベル数、extend (範囲外の扱い)。ヒートマップはカラーマップだけ
カラーバー (カラーバーを持つレイヤー) 表示、位置、目盛り・ラベルを反対側に表示、長さ、厚み、枠線と目盛り線の太さ、図との間隔、ラベルと目盛りの文字サイズ・距離 (ラベルの文字列は入らない)
等値線 線の色付け、線の色、線の太さ、線種 (正の値・負の値)、等値線ラベル (表示・文字サイズ・書式)
ハッチ ハッチの種類・密度・線の太さ・線の色、下限値・上限値
ベクトル 色付けと色、間引き格子数、大きさが閾値以下の矢印を非表示 (と閾値)、スケールを自動と基準ベクトルの長さ、線幅、頭の長さ、枠線 (表示・色・太さ)、ベクトルキー (表示・長さ・ラベルの配置・文字サイズ・位置)

論文投稿前の確認

ClimCanvas は指示どおりに描く道具で、図が意図したものを示しているかの確認は利用者の責任です。論文や報告に図を使う前に、次の 4 点を確認することを勧めます。数値上の前提 (選択・切り出し・平均・欠損・統計量の定義) は計算の前提にまとめてあります。

  1. 図の下の「この図に適用した処理」の枠と、再現スクリプトのデータ節を読む。枠には値の変換 (変数ごとの倍率 a・加算 b。変数の units 属性を添える)、範囲平均 (次元・範囲・算術か cos(lat) 重み付きか・含まれた格子点の数・範囲内の欠損数)、マスクアウトの閾値、2 次元座標格子でベクトル成分を回転していないことが、使っているときだけパネルごとに出ます。あわせて、本体に値の変換があるのにエラー量には掛けていないこと (誤差の変数と本体の units 属性が違うときも)、1 次元プロットの同じ縦軸 (第 2 軸・横棒の横軸は別に扱う) に units 属性か値の変換が違う量が重なっていることも出します。units 属性は文字列で比べるだけなので、「m/s」と「m s-1」のような書き方の違いも「違う可能性がある」と表示されます。固定した座標値は .sel(...) に実値で、範囲平均は .mean(...) (cos 重み付きなら .weighted(...)) の行に平均した次元とともに、そのまま書かれています (生成スクリプトの構成)。意図したレベル・時刻・範囲・重みになっているかを、この数行で確認できます。
  2. 描いた値を自分の計算と突き合わせる。再現スクリプトで描画呼び出しに渡している配列を print するか to_netcdf で書き出せば、GrADS や CDO、自作スクリプトで求めた値と比較できます。範囲平均・帯状平均・単位変換の結果を 1 点でも照合しておくと、選択や重みの取り違えに気づけます。
  3. 使った版を控える。版は再現スクリプトの 1 行目に書かれています。図の作成にどの版を使ったのか控えておいてください。論文で引用する場合は版を付けて引用してください。DOI (全版共通の concept DOI と、節目の版の版 DOI) の使い分けと引用例はインストール: 引用にあります。
  4. 既知のバグを確認する。図の値に影響するバグは、影響する版と機能とともにリポジトリの KNOWN_ISSUES.md に載せます。投稿前と、公開後に修正版が出たときに、自分の版と使った機能が該当しないかを確認してください。

「この図に適用した処理」の枠を過信しない

この枠は、間違いを未然に防ぐための助けです。すべての間違いを見つけられるわけではありません。 枠に何も出ないことは、図が正しいことの保証にはなりません。 たとえば単位は変数の units 属性の文字列を比べているだけなので、書き方が違うだけの同じ単位 (m/s と m s-1) も「違う可能性がある」と出ます。 逆に、units 属性が書かれていないデータや、1 次元の集計・散布図の複数レイヤーのように判定の対象外の組み合わせでは、単位の食い違いがあっても何も出ません。 枠を過信せず、上の 2. のように描いた値を自分でも確かめてください。