Extension:Graph/ja

Graph (グラフ) 拡張機能は タグを用いてデータの画像化をJSONで記述しレンダリングします. 棒グラフ、円グラフ、タイムテーブル（年表）やヒストグラム（demo）をVega宣言型プログラミングで生成します.

全般的な情報
グラフ拡張機能は強力なVega宣言型プログラムのグラフをウィキページに加えます. グラフは静的と動的のどちらの形式も扱います.

もっとも簡便にグラフを追加するには、既存のなどのテンプレートを使います. これらのテンプレートはVegaの複雑さを見ずに済みます. 熟練のユーザーならグラフ用サンドボックスでグラフが作成できます. グラフのサンドボックスでは、JSON に加えてウィキのテンプレート構文を使用できます.

有用なリンク

 * Vega 2 documentation - restored Vega 2 documentation pages.
 * - ウィキでグラフを使う方法の標準的な推奨.
 * - ゼロから複雑でインタラクティブなグラフ完成まで、段階的に解説する説明書.
 * - サンプルや使用法のトリックを解説.
 * [$video TechTalk Video] - ウィキメディア財団技術部門の議論. グラフ拡張機能を取上げ、[$lyra1 Lyra エディタ]をわかりやすくデモしている. （[$lyra2 on labs]も合わせてインストールする）.
 * 興味があれば、Vegaの[$youtube1 将来的な機能]の動画も参照できる（Jeffrey Heerの基調講演）.
 * [$vega-github 開発者のためのVega解説] - Vegaのリソースを探すならこちらが最適.
 * [$youtube2 インタラクティブなVegaの紹介ビデオ]
 * [$youtube2 インタラクティブなVegaの紹介ビデオ]
 * - step by step instructions how to build a complex interactive graph from scratch
 * - for many samples and usage tricks
 * TechTalk Video - a WMF tech talk discussing the Graph extension, including a great demo of the Lyra editor (also installed on labs).
 * You may also be interested in some of the Vega future capabilities (Keynote by Jeffrey Heer).
 * Vega for devs - best place of all Vega resources
 * Video introduction into interactive Vega
 * Video introduction into interactive Vega

Additional config setup
If you are looking to replicate a production environment like en.wiki you will need to complete the following steps:

Roles


 * Enable graphs role
 * Enable scribunto role
 * Enable imagemap role

Templates and Lua Modules


 * Copy Module:Graph locally
 * Copy Module:Graph/doc locally
 * Copy Template:Nowrap locally
 * Copy Module:Chart locally
 * Copy Module:Plotter/DefaultColors locally.

表の例
サンプルや使用法の裏技はを参照してください.

User defined fallback
When using client side rendering, it is possible to use Wikimedia Commons to provide a static fallback image to  users. This is a temporary solution until a new service is put in place to provide server side rendering to replace the soon to be decomissioned Graphoid service.

The user must first upload the static graph to Wikimedia Commons.

Fallback images have two variables  and. relates to a Wikimedia Commons filename.

is the fallback images width in pixels.

These variables are pass through the graph in the following way:

Where lua modules are used such as Module:Graph then these variables can be provided via the tag function. If Template:Graph:Chart were adapted, it would look like this:

It would then be utilised in a template in the following manner:

If a fallbackWidth isn't provided but an image is defined then the extension will derive the width from the provided graph width. The reason for this is there there is frequently a difference in the redered image width and the actual image width.

外部データ
HTTP(S)を使ってグラフのデータを取得することはできません. 代わりに や 等、固有のウィキ・プロトコルを使用してください.

Graphoidサービスとグラフ拡張機能は 設定を用いてプロトコルの解決を設定します. Note that because queries rely on the structure of wikibase items, they may suddenly stop working if the underlying data is edited and changes, as it may yield incomplete, empty or invalid data that can't be used to create a graph. In these cases the graph will end up empty (see T168601).

既知のバグと制限

 * グラフ拡張機能のバグ
 * Graphoidサービスのバグ
 * ISO 8601タイムスケールの実装に失敗. したがってタイムラインではグレゴリオ暦のみ使用可能.
 * 拡大するとほとんどのブラウザで画像がぼやけます. 解決するにはimage-rendering属性を適正に設定します.

内部リンク
解析をすると、グラフ拡張機能はテンプレートのパラメータやexpressionsをすべて開き、グラフのハッシュを識別子に使うと完全なグラフ定義を ページのプロパティとして保存. このことから、ウィキのグラフを検索するときSpecial:PageWithPropsか[//www.mediawiki.org/w/api.php?action=query&list=pageswithprop&continue=&formatversion=2&pwppropname=graph_specs the action API]を用いると簡単に見つけることができます.

グラフ拡張機能はページ上のどこにグラフを配置するか、HTML形式で、タグを含むを出力. サンプル:

タグの 属性は[//www.mediawiki.org/api/rest_v1/page/graph/png/Extension%3AGraph%2FDemo/1686336/d243aa924db2f82926e0f317217fcce591fe8cd4.png 静的なグラフの画像]を提供する#Graphoidサービスを示す.

グラフ拡張機能の設定がインタラクティブであり、クライアントのブラウザでJavaScriptが有効かつResourceLoaderがJavaScriptを積まない旧来のブラウザではないなら、クライアントのブラウザはグラフを読み込みと同時に解析します. グラフ拡張機能はResourceLoaderのJavaScriptモジュールとしてVegaライブラリを含むページに を呼び込み、グラフ定義のJSONを通称 と呼ばれるJavaScript 変数に組み込む. このモジュールがクライアントのブラウザに読み込まれると、Vega JavaScriptライブラリはを個別のHTMLキャンバスに取り込み、その中にグラフを描画すると静止画像と置き換えます. 2015年11月時点では、ウィキメディアのウィキでは編集のプレビュー以外で、このインタラクティブなレンダラを有効にしていません.

ユーザーはグラフ拡張機能を設定し、常時タグのみ使用するがVegaライブラリやグラフ定義のJSONを参照しないようにできます. このモジュールは が保存後まで更新されないため、編集作業中には作動しません. 一旦保存すると、GraphoidサービスはアクションAPI経由で新しいグラフ定義にアクセスできます.

セキュリティ機能
信用できないデータソース参照を許可しないように、 を設定できます（例: ウィキメディアではウィキメディアのサイト内のデータのみ許可）. また外部データにアクセスするたびに追加の見出しを送ることができ、例えば 見出しにより、MediaWikiはCSRF攻撃を予防します.

ライセンス
VegaライブラリはBSDライセンスの修正版容認の範囲で使用できるものとして配布されます.

BSDライセンスの複写に（容認できる範囲の）微調整を加えたようにも見えます. 使用に際して問題はありませんが、このような変更をライセンスに加えないと理想的です. ライセンスがオープンソースの使用について安全かどうかという（このような）混乱を防ぐためにも、ライセンス条件にこのような改変を行うことは好ましくありません.

wgGraphIsTrusted
もし （既定）なら、Treat-as-Untrustedを返す. つまりヘッダ1件にあらゆるグラフデータのリクエストが対応

wgGraphImgServiceUrl
&lt;img> タグ向けのバックエンド サービス要求 URL を構成する書式文字列. 例えば:

このURLを出力:

//graphoid.wikimedia.org/mediawiki.org/v1/png/Extension:Graph/0/be66c7016b9de3188ef6a585950f10dc83239837.png /{domain}/v1/png/{title}/{revid}/{hash}.png

パラメータの出力順: 1=サーバ、2=題名、3=revid、4=graph-hash-id. どのパラメータもrawurlencodeを用いて回避できる. 値が の場合（既定） urlはまったく生成されない

その他の変数
wgGraphUrlBlacklist変数を787d64a11から削除（2015年12月7日）.

wgGraphDataDomainsはe0813f85aから削除（2016年1月28日）. wgGraphAllowedDomainsを用いること.

wgGraphUserServiceAlways変数はb735f63ff4bから削除（2015年9月30日）.

グラフ名前空間の有効化
を設定すると、グラフの設定を単独ページとしてそれぞれの名前空間に保管できます.

Graphoid サービス
Graphoid（）とはnode.js サービスであり、先進的なブラウザで使用されるのと等しいVegaライブラリ・コードを採用し、グラフの定義から静的なPNG形式の画像に変換します. そもそもGraphoidが開発された理由は、静止画を提供してページごとにVega ならびに d3 リソースローダーのモジュールをバンドルする必要を解消するためでした. 詳細は T211881 を参照してください. このサービスはウィキメディアのクラスタ上のhttps://www.mediawiki.org/api/rest_v1/#/Page%20content/get_page_graph_png__title___revision___graph_id_によって提供されます.

ユーザー自身によるインストールが可能です.

(注記：このパッケージはメンテナンスが継続しておらず(T211881、インストールが失敗する場合は T196001と T239100を参照. npm i --build-from-source も参照. )

各サービスURLにはページのドメイン名（例＝mediawiki.org）とサービスのバージョン（v1）、グラフが載ったページの題名（PageTitle）とページの更新ID（12345等だが現状は0もあり）、さらにグラフ自体の隠しIDが書かれています（グラフ定義を認識するためHTMLでも使用）. 例を挙げるとすると:

http://localhost:6927/mediawiki.org/v1/PageTitle/12345/a64b022a8fa5b7fc5e40a2c95cd0a114b2ae1174.png (deprecated url)

https://www.mediawiki.org/api/rest_v1/page/graph/png/Extension%3AGraph/3420825/72edc224f0a10b343c1e84f63dbfc97cac9bc957.png

グラフ拡張機能を定義、LocalSettings.phpにおいてGraphoidサービスを線と同時に用いる例

graphoid サービスを設定


このサービスはconfigファイルを使ってさらに設定ができます.

ビジュアルエディターのモジュール
2015年の夏以降、グラフ拡張機能にはVisualEditorを使ってグラフを編集するモジュール（ext.graph.VisualEditor）が付与されました.

このモジュールは「Google Summer of Code 2015」プロジェクトの成果です. 詳細は T89287 を参照してください.

ユーザーはこのモジュールを使い、外部の拡張機能ノードに頼らずとも、VisualEditor内でグラフを見ることができます. ユーザーはさらに、グラフの形式、データやパディングを編集するダイアログを開くことができます. ユーザーインタフェース（UI）ではさらに、ウィキテキスト・エディターに切り替えなくてもビジュアルエディター上でグラフの生JSON定義を直接、編集できます. 熟練したユーザーなら、これを使ってUIのサポートしない設定の微調整も可能です.

この第1ステップは、ビジュアルエディター内でどのようなグラフ編集ができるかという試金石になり、またモジュールとして改善したり伸展する方法が十分にあります.

関連項目

 * Extension:GraphViz — エッジ（枝）で結ばれた複数のノード（頂点）のグラフを表示（このページで解説した拡張機能の表形式ではない）
 * Plotly — オープンソースのJavaScriptグラフ作成ライブラリ（3D作表も可能）
 * D3 — データ駆動型ドキュメント