出力と再現スクリプト
描いた図を画像・動画・Python スクリプトとして書き出す方法を説明します。出力の操作はメイン領域の図の下にあり、アニメーションの設定だけはサイドバーの「時刻」の節にあります。
静止画の保存
メイン領域の「画像出力」の項目です。
| 項目 | 内容 | 既定 |
|---|---|---|
| 出力形式 | PNG / JPG / TIFF / SVG / PDF / EPS | PNG |
| 解像度 (dpi) | 150 / 300 / 600。ベクター形式 (SVG / PDF / EPS) ではラスタライズされる要素にだけ効く | 300 |
| 出力ファイル名 | 拡張子は出力形式に合わせて付け替える | figure.png |
| 背景 | 白 (既定) / 色を指定 / 透明。プロット枠の外側の余白の背景で、プレビューには反映されない | 白 |
| 余白を切り詰める (bbox_inches="tight") | 図の周りの余白を切り詰める | オン |
- 「{形式}をダウンロード」で保存します。複数パネルは 1 つの図なので 1 ファイルに全パネルが入ります。
- JPG は非可逆圧縮で輪郭がにじみ、透明背景に対応しません。論文や印刷には PNG / TIFF / PDF を使ってください。TIFF は無圧縮でファイルが大きくなります。EPS は透明度や半透明の塗りつぶしが完全には再現されないことがあり、透明背景にも対応しません。JPG と EPS で透明を選ぶと白背景で出力します。
- 画像のピクセル数は Figure サイズ (inch) × dpi です (基本操作)。

時刻送りアニメーション
水平断面図、鉛直断面図、1次元プロットで、サイドバーの「時刻」→「アニメーション表示」から作ります。時間断面図は時刻が軸なので対象外です。
| 項目 | 内容 | 既定 |
|---|---|---|
| 開始時刻 / 終了時刻 | 先頭 / 末尾 | |
| ステップ (n個ごと) | 1〜100 | 1 |
| fps (frame/秒) | 1〜10 | 4 |
| 解像度 (dpi) | 各フレームの解像度 (50〜400)。画素数 = Figure サイズ × dpi | 100 |
| ファイル形式 | GIF / MP4。MP4 は ffmpeg が見つかるときだけ出る | GIF |

- 設定の下にフレーム数とフレームの大きさの目安、期間内の値の範囲 (「時間範囲内の値域」) が表示されます。値の範囲は、塗りつぶしの最小値・最大値を固定してコマ間で色を揃えるときの目安です。
- 「再生」はアプリ内で順に表示します (描画時間が加わるので fps より遅くなることがあります)。「ファイル生成」は GIF か MP4 を作り、「アニメーション {形式} をダウンロード」で保存します。ファイル名は animation.gif / animation.mp4 です。「再現スクリプト」はアニメーションを再現する Python スクリプトを作ります (アニメーションの再現スクリプト)。
- コマごとに図全体を描き直すので、時間はフレーム数に比例します。
- 複数パネルでは全パネルの時刻を同期して進めます。レイヤー側で時刻を固定している設定も進みます。時刻が描画軸のパネルはそのまま描かれ、「時刻を表示」のラベルはコマごとに追従します。
- MP4 は H.264 で、縦横のピクセル数を偶数に揃えます。ffmpeg の入れ方はインストールを参照してください。GIF は各フレームを画像として連結し、回転なしのときは余白を切り詰めます。
地球の回転アニメーション
投影法が Orthographic で、図が単一パネルのときだけ「動かすもの」が出ます。
- 「動かすもの」は「時刻送り」「地球の回転 (時刻固定)」「時刻送り + 回転」の 3 択です。時刻次元の無いデータ (気候値など) では回転だけになります。
- 開始点は「投影法・領域」の中心経度・中心緯度です (静止図が最初のコマ)。「経由点を追加」で経由点 (経度・緯度) を 0 個以上置き、「終点 経度 / 緯度」(既定は開始点の経度 + 90°) で終わります。
- 経路は緯度経度の線形補間で、経度は最短方向に回ります。同じ向きに回し続けるには 180° 未満の間隔で経由点を置いてください。区間には角距離に比例してコマを配分するので、経路上の速さは一定です。
- 回転だけのときは「総フレーム数」(2〜1000、既定 36) を入れます。時刻送り + 回転では「1時刻あたりのコマ数」(既定 1) で同じ時刻を何コマ続けるかを決め、総フレーム数は時刻数 × コマ数になります。コマ数を増やすと時刻の進みに対して回転が滑らかになります。
- 回転する GIF は余白を切り詰めずに固定サイズで保存します (コマごとに緯度経度ラベルの位置が動いて外接枠が揺れるため)。
- 目安として 100 dpi で 1 コマ 0.4〜0.9 秒、180 コマで数分かかります。特定の中心で cartopy が緯度経度線の描画に失敗することがあり、そのときは失敗したコマと中心が表示されます。経由点やフレーム数を変えるか、緯度経度線を切ってください。
再現スクリプト
設計
再現スクリプトは xarray、numpy、matplotlib、cartopy だけに依存する自己完結の Python コードで、ClimCanvas が無い環境でも実行と手直しができます。アプリ内の描画と生成スクリプトの描画は同じ環境で画像が一致するようにテストされています。例外は外部カラーマップで、cmocean / cmcrameri / cmaps のカラーマップを使ったときだけ、そのパッケージの import が入ります。
生成スクリプトの構成
メイン領域の「再現スクリプト」で「netCDFパスの形式」(絶対パス / 相対パス)、「savefig を含める」「plt.show() を含める」(ともに既定オン) を選び、「スクリプトをダウンロード」で保存します。ファイル名は出力ファイル名の拡張子を .py に変えたものです。中身は図の直下の「生成されるスクリプトを表示」で確認できます。相対パスはアプリを起動したディレクトリが基準です。
スクリプトは上から次の順に並びます。
- 1 行の説明 (生成した ClimCanvas の版)。
- 必要な import だけ (matplotlib、numpy、xarray、cartopy など)。
- 外部カラーマップの import、カスタムカラーマップの登録、埋め込み関数 (必要なときだけ)。
ds0 = xr.open_dataset(...)などのデータ読み込み。暦の変換、座標ファイルの結び付け、次元名の揃えも同じ内容が書き出されます。- Figure の作成、パネルごとの axes とレイヤーの描画、カラーバー、注記。
fig.savefig(...)とplt.show()。savefig の引数には「画像出力」の形式・解像度・背景・余白の設定がそのまま入ります。

実行すると同じディレクトリに図のファイルができます。パネルごとの描画は独立したブロックなので、ブロック単位で削除やコピーができます。手で直す典型的な箇所は、データのパス、savefig の出力名と dpi、figsize、各描画呼び出しの引数です。
別のマシンで実行するとき
フォントは環境依存で、同じフォントが無ければ matplotlib の既定に戻ります。1:50m / 1:10m の地理データは初回に cartopy が ダウンロードします。netCDF の読み込みには netCDF4 などの xarray のバックエンドが必要です。
外部カラーマップとカスタムカラーマップ
- 外部カラーマップ (cmocean / cmcrameri / cmaps) を使うと、冒頭に対応する import (cmaps では登録の行も) が自動で入ります。実行環境にも同じパッケージが必要です。
~/.climcanvas/cmaps/に置いたカスタムカラーマップは、RGB の値ごとスクリプトに埋め込まれて登録されます。別のマシンに渡すときにカラーマップのファイルをコピーする必要はありません。
アニメーションの再現スクリプト
「アニメーション表示」→「再現スクリプト」→「アニメーション再現スクリプトをダウンロード」で animation.py を保存します。描画本文をコマのループで包んだ形で、時刻の一覧 (回転では中心経度・緯度の一覧) がリテラルで書かれています。GIF では Pillow、MP4 では ffmpeg を使うので、実行環境に必要です。netCDF のパスは常に絶対パスです。
セッション
保存と復元の操作は基本操作、保存先のディレクトリは使い方にあります。ここでは中身と注意点をまとめます。
- セッションの JSON は画面の設定値の一覧で、読み込んだファイルのパスと座標ファイルのパスを含みます。データ本体は含みません。元のファイルを移動・削除すると復元に失敗します。
- 表示言語はセッションに含まれません。セッションを読み込んでも言語は変わりません。
- セッションのファイル名は自由です。ダウンロードしたファイルは好きな名前に変えてよく、名前を付けて保存では入力した名前に .json が付きます。復元はどちらも任意の名前で行えます。
- セッションでない JSON (プリセットなど) を復元しようとすると「セッションの JSON ではないようです」と表示されます。
- 版を上げて設定項目が変わると、古いセッションの一部の項目は無視されます (エラーにはなりません)。旧い版が選択肢を表示名で保存していた形式は、読み込み時に自動で変換されます。
プリセット
プリセットは、データに依存しない好みの設定を ~/.climcanvas/preset.json に保存し、次回の起動時に自動で適用する仕組みです。保存と削除はサイドバーの「保存」→「プリセット」で行います (基本操作)。
- 画面の設定値を項目ごとにそのまま保存し、起動時に同じ項目へ戻します。保存されるのは下の表の設定だけです。
- パネルとレイヤーの設定は、パネルの番号 (作った順)・描画モード・レイヤーの番号 (追加した順) ごとに保存され、起動後に同じ番号のパネル・レイヤーにだけ反映されます。1 枚目のパネルで体裁を整えてプリセットに保存し、パネルを増やすときは複製すると使い回せます。
- 入らないもの: ファイルのパス、描画モード、投影法と領域、次元の固定、変数の選択、値の範囲とレベルの指定、値の変換、タイトル・軸・カラーバーのラベルの文字列、パネルラベル、文字列と記号。表に無いレイヤー種別の体裁 (1 次元プロットの線や棒、散布図モードの点の色・太さ・大きさなど) も入りません。
| 場所 | 保存される設定 |
|---|---|
| サイドバー上部「言語 / Language」 | 表示言語 |
| 図全体の書式 → フォント | フォントを指定するか、選び方、フォント |
| 図の下「画像出力」 | 出力形式、解像度 (dpi)、出力ファイル名、背景 (白・色を指定・透明) と背景色、余白を切り詰める |
| 図の下「再現スクリプト」 | netCDF パスの形式、savefig を含める、plt.show() を含める |
| 地図・グリッド線 → 地図の設定 (水平断面図) | 海岸線 (表示・太さ・色)、国境線の表示、陸域 (塗りつぶし・色・データの上に描く)、海域 (塗りつぶし・色)、図の枠線の太さ |
| 地図・グリッド線 → 緯度経度線の設定 | 表示、線 (表示・太さ・色・線種)、経度線と緯度線の間隔、ラベル (表示・表示する辺・円周沿いと極の経度ラベル・緯度ラベルの縁・間隔・開始位置・回転・文字サイズ・距離) |
| 地図・グリッド線 → ティックマークの設定 | 表示、経度と緯度の間隔、長さ、太さ、向き、表示する辺、短いティック (追加・間隔・長さ・太さ) |
| 図枠 | 上下左右の枠線の表示、枠線の太さ、枠線の色 |
| 文字サイズ | タイトル文字サイズ (文字・記号 → タイトル)、軸ラベルの文字サイズ (ラベル)、目盛り文字サイズ (目盛) |
| 時刻を表示 | プロット上部に時刻を表示、位置、時刻の書式 |
| アニメーション表示 | fps、解像度 (dpi)、ファイル形式 |
| カラーマップ (塗りつぶし・等値線・ベクトル・流線・散布図 (点)・トラック・hexbin・2 次元ヒストグラム・バブルチャート・ヒートマップ) | カラーマップの分類と名前、カラーマップを反転、カラーレベル数、extend (範囲外の扱い)。ヒートマップはカラーマップだけ |
| カラーバー (カラーバーを持つレイヤー) | 表示、位置、目盛り・ラベルを反対側に表示、長さ、厚み、枠線と目盛り線の太さ、図との間隔、ラベルと目盛りの文字サイズ・距離 (ラベルの文字列は入らない) |
| 等値線 | 線の色付け、線の色、線の太さ、線種 (正の値・負の値)、等値線ラベル (表示・文字サイズ・書式) |
| ハッチ | ハッチの種類・密度・線の太さ・線の色、下限値・上限値 |
| ベクトル | 色付けと色、間引き格子数、大きさが閾値以下の矢印を非表示 (と閾値)、スケールを自動と基準ベクトルの長さ、線幅、頭の長さ、枠線 (表示・色・太さ)、ベクトルキー (表示・長さ・ラベルの配置・文字サイズ・位置) |
論文投稿前の確認
ClimCanvas は指示どおりに描く道具で、図が意図したものを示しているかの確認は利用者の責任です。論文や報告に図を使う前に、次の 4 点を確認することを勧めます。数値上の前提 (選択・切り出し・平均・欠損・統計量の定義) は計算の前提にまとめてあります。
- 図の下の「この図に適用した処理」の枠と、再現スクリプトのデータ節を読む。枠には値の変換 (変数ごとの倍率 a・加算 b。変数の units 属性を添える)、範囲平均 (次元・範囲・算術か cos(lat) 重み付きか・含まれた格子点の数・範囲内の欠損数)、マスクアウトの閾値、2 次元座標格子でベクトル成分を回転していないことが、使っているときだけパネルごとに出ます。あわせて、本体に値の変換があるのにエラー量には掛けていないこと (誤差の変数と本体の units 属性が違うときも)、1 次元プロットの同じ縦軸 (第 2 軸・横棒の横軸は別に扱う) に units 属性か値の変換が違う量が重なっていることも出します。units 属性は文字列で比べるだけなので、「m/s」と「m s-1」のような書き方の違いも「違う可能性がある」と表示されます。固定した座標値は
.sel(...)に実値で、範囲平均は.mean(...)(cos 重み付きなら.weighted(...)) の行に平均した次元とともに、そのまま書かれています (生成スクリプトの構成)。意図したレベル・時刻・範囲・重みになっているかを、この数行で確認できます。 - 描いた値を自分の計算と突き合わせる。再現スクリプトで描画呼び出しに渡している配列を
printするかto_netcdfで書き出せば、GrADS や CDO、自作スクリプトで求めた値と比較できます。範囲平均・帯状平均・単位変換の結果を 1 点でも照合しておくと、選択や重みの取り違えに気づけます。 - 使った版を控える。版は再現スクリプトの 1 行目に書かれています。図の作成にどの版を使ったのか控えておいてください。論文で引用する場合は版を付けて引用してください。DOI (全版共通の concept DOI と、節目の版の版 DOI) の使い分けと引用例はインストール: 引用にあります。
- 既知のバグを確認する。図の値に影響するバグは、影響する版と機能とともにリポジトリの
KNOWN_ISSUES.mdに載せます。投稿前と、公開後に修正版が出たときに、自分の版と使った機能が該当しないかを確認してください。
「この図に適用した処理」の枠を過信しない
この枠は、間違いを未然に防ぐための助けです。すべての間違いを見つけられるわけではありません。 枠に何も出ないことは、図が正しいことの保証にはなりません。 たとえば単位は変数の units 属性の文字列を比べているだけなので、書き方が違うだけの同じ単位 (m/s と m s-1) も「違う可能性がある」と出ます。 逆に、units 属性が書かれていないデータや、1 次元の集計・散布図の複数レイヤーのように判定の対象外の組み合わせでは、単位の食い違いがあっても何も出ません。 枠を過信せず、上の 2. のように描いた値を自分でも確かめてください。