Skip to main content

カスタム複数行 プロット

wandb.plot.line_series()の使用法と実例
Created on February 19|Last edited on February 16
このレポートは、Stacey Svetlichnayaによる「Custom Multi-Line Plots」の翻訳です。



メソッド:wandb.plot.line_series()

W&Bでネイティブにカスタムラインシリーズプロットをログに記録します。
wandb.log({"my_custom_id" : wandb.plot.line_series(
xs=[0, 1, 2, 3, 4],
ys=[[10, 20, 30, 40, 50], [0.5, 11, 72, 3, 41]],
keys=["metric Y", "metric Z"],
title="Two Random Metrics",
xname="x units")})
このカスタムチャートは、x-y軸の1つの共有セットに、複数行またはx-y座標ペアの複数の異なるリストをレンダリングします。デフォルト設定とランダムデータの2つの例を以下に示します。これらのグラフをパンおよびズームインして、細部を表示できます(たとえば、線が近すぎて区別できない場合)。

Random data sample
2


基本的な使用例

時系列のTensorFlowチュートリアルに従って、温度、気圧、湿度などの14の異なる機能の気象データセットを使用します。完全なデータの小さなサブセットが、climate_dataと呼ばれるPandasデータフレームに読み込まれます。
columns = ['T (degC)', 'p (mbar)', 'rho (g/m**3)']
num_steps = 200
xs = [ i for i in range(num_steps) ]
ys= [ climate_data[c][:num_steps] for c in columns ]
wandb.log({"weather_sample" : wandb.plot.line_series(
xs=xs,
ys=ys,
keys=columns,
title="Weather Metrics")})
x点とy点の数は正確に一致する必要があることに注意してください。複数のysリストに一致するxsの1つのリスト、またはysリストごとに個別のxsリストを指定できます。これらの気温/気圧/密度の測定が異なる時間に行われた場合、x値の3つの異なるリストを提供できます。ここで線系列プロットの完全な定義を参照してください。

従うべき手順:

  • プロットする各線系列について、x値とy値、およびオプションで各系列の名前を見つけます
  • 同じ順序を維持しながら、x値のリストをxsに、y値のリストをysに、オプションの名前をkeysに渡します。
  • これらの引数をwandb.plot.line_series()(プロットタイトルとx軸タイトルはオプション)に渡して、指定されたキー(上記のweather_sample)の下にプロットを作成します。同じプロットで複数の実行を視覚化するには、このプロットキーを一定に保ちます。テーブル自体も、weather_sample_tableの下のワークスペースの[メディア]セクションに記録されることに注意してください

Sample time series data
1


カスタマイズされた使用法

Vega視覚化文法を使用して、線系列プロットを簡単にカスタマイズできます。ここでは、同じ軸のセットで複数のタイムスライスを比較して、データの分散をより適切に視覚化します。チャートの右上隅にカーソルを合わせて「目」アイコンをクリックすると、完全なVega仕様(各チャートの定義)を確認できます。
いくつかの簡単な変更:
  • 色がメトリックキーに対応し、ストロークがログに記録されたタイムスライスに対応するように、行のラベルを切り替えます。strokeDash"field": "name"が含まれ、color"field": "${field:lineKey}"が含まれるように、strokeDashcolorの下のfield値を交換します。scaleエントリを削除します。
  • メインのタイトル、凡例、および軸を編集して、よりわかりやすくします。encodingの下の関連フィールドに"title": "Your Title"を追加します。

Randomized time slices
3


その他の実例:さまざまなx値のログ

単純なケースでは、y値の複数のリストがx値の単一のリストにマップされます。ここでは、異なる周波数で3つの蒸気圧メトリックをサンプリングして、少し高度なケースを示します。y値の各リストに対応するx値のリストを渡します。また、x値を明確に区別するために、"type" : "line""type" : "point" に変更します。
グラフの下の行では、サンプルID(左下)とメトリックタイプ(右下)でデータを色付けした場合の視覚化の有効性/知覚的なグループ化の強さを比較できます。

Vapor pressure data
4


独自のカスタムチャートを作成するためのプリセット編集方法

  • 既存のチャートタイプから開始します。カスタムチャート>鉛筆アイコン>左上の[編集]ボタンの右上隅にカーソルを合わせます。
  • このJSONを直接編集して、対応するビジュアルが右側に再レンダリングされることを確認してください。有用で素晴らしいオンライン上のVega例をたくさん見つけることができます。
  • 右側のドロップダウンメニューにカスタムタイトルなどのテキストフィールドを選択的に入力します
  • 変更に満足したら、後で再利用できるようにカスタムグラフの新しいコピーを保存します。左上の[名前を付けて保存]をクリックし、グラフの種類に新しい説明的な名前を付けます(ボーナスとして、後で参照しやすいように説明も編集してください)。これで、ユーザー/チームエンティティの下で再利用できるようになります。
  •  ボーナス:変更したカスタムチャートをプリセットとして保存すると、Pythonからwandb.plot_table(vega_spec_name="your_username/your_custom_preset_name")を介して直接ログに記録できます。詳細と例はこちら

変更されたVega仕様

このバージョンのラインシリーズ仕様は、実行ではなくメトリックによってラインに色を付け、特定のタイトルを含みます。
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"description": "A plot for an arbitrary number of lines",
"data": {
"name": "wandb"
},
"title": "Climate Data Sample",
"layer": [
{
"selection": {
"grid": {
"type": "interval",
"bind": "scales"
}
},
"mark": {"type": "line", "interpolate": "linear"},
"encoding": {
"x":{
"field": "${field:step}",
"type": "quantitative",
"title": "Time step of measure"
},
"y": {
"field": "${field:lineVal}",
"title": "Value in indicated units",
"type": "quantitative"
},
"color": {
"type": "nominal",
"field": "${field:lineKey}",
"title" : "Units of measure"
},
"strokeDash": {
"type": "nominal",
"field": "name",
"title" : "Sample id"
}
}
}
]
}

Q & A

お読みいただきありがとうございました!これが、ユニークで説得力のあるカスタムチャートの作成に役立てれば何よりです。ご不明な点がございましたら、以下にコメントしてください!
Iterate on AI agents and models faster. Try Weights & Biases today.