ir_model の設計
設計目標
レポートが何を述べるかと、それがどう描かれるかを分離します。Plot IR は小さなバージョン付きのデータモデルで、report がイベントから生成し、任意のレンダラ(組み込みの SVG/HTML、ノートブック、ダッシュボード)が利用できます。
数学的背景
プロットは、カテゴリカルな 、実数の 、系列ラベル からなる点 の有限多重集合です。系列を通るレンダラの線は次の写像です
これは系列が点を持つカテゴリ上で定義されます。点が保持されているので、他の要約(中央値、分位点)も同じ IR から情報を失わずに計算できます。要約だけの IR では点を復元できません。
設計上の決定
カテゴリカルな x
問題。 スケールは整数、形状、レイアウト、名前のいずれでもありえます。選択。 x は文字列です。理由。 1 つの表現ですべてのスケールの型をカバーでき、最初に現れた順序が生成側の選んだ順序になります。数値的な間隔を扱うには IR にスケールの型が必要になります。
要約ではなく生の点
点は生の値を持ちます。区間や要約のプロットは、点が要約であるプロットにすぎず、interval_kind でラベル付けされます。IR は、ある数値をどの統計量が生成したかを知る必要がありません。
プロットの隣にある差分の証拠
DifferentialReport はプロットと同じドキュメントに含まれます。レンダラは、同じ実行の正しさの証拠を手元に持たずに、その実行の計時値を表示することはできません。
すべてのドキュメントにバージョン
schema_version は PlotDocument::new によって mmks_1 に設定され、JSON 形式に書き込まれるため、利用者は理解できないドキュメントを拒否できます。
正しさと不変条件
PlotDocument::newは常にschema_versionをV1に設定します。DifferentialReport::empty()は行を持たず、件数はゼロです。- レコードは単なるデータです。検証も派生フィールドもありません。
採用しなかった代替案
- 単位付きの数値軸。 先送りしました。上記を参照してください。
- プロットライブラリの仕様形式。 IR を 1 つのレンダラに縛ることになります。
境界
- 描画(それは
reportの役割)、解析、統計は行いません。 - コーパスの合計は他の件数と照合されません。
PlotKind::Paretoはカテゴリカルな散布図です。IR には 2 軸のフロントはありません。