pukiwikiプラグイン/svggraphs

2024-02-29 (木) 23:54:06
お名前:

表記、作成中のプラグインです。

内容がいろいろ複雑なので、α版レベルで一度公開します。
興味があれば触って、ご意見いただけると。

プラグイン概要

テキストデータからグラフを作成・表示するプラグインです。

グラフのデータには、以下のいずれかの方式を利用できます。

  • 別のwikiページに記載し、それを file 指定で取り込む
  • pukiwikiの複数行パラメータオプションを利用する

描画には svgを利用しています。そのため、svg未対応のブラウザでは表示されません。

  • 下記環境では表示されていることを確認済です。
    • Windows環境:IE11, Edge38, Vivaldi/1.7(Chrome56.0)
    • Android Chrome 56.0

ぶっちゃけ、他のWebサービスとか、Excelで作った画像を貼るなど、代用手段はいろいろあると思いますが、まあ。

インストール方法

下記zipファイルをダウンロードして、展開してください。
中には複数の php ファイルがあるので、それをすべて pukiwiki/plugin フォルダにおいてください。

使い方

ブロックプラグインです。
必要なパラメータをプラグインに与えることで、グラフ描画します。

#svggraphs(gtype=line ,file=テストデータ)

最初の gtype は必須パラメータです。グラフの形状を指定するパラメータで、現状次のものをサポートしています。

line折れ線グラフ
circle円グラフ
histgramヒストグラム
gridmapグリッドマップ(グラフというよりは、ゲーム地図表示的な用途)
meter棒グラフ的なメーター表示
raderレーダーチャート

2つ目以降のパラメータに基づいて、グラフを描画します。
1つのグラフを書くには多数のパラメータ(情報)がいるため、それらのパラメータ群を記載した「別のpukiwikiページ」を指定する、もしくは「マルチライン引数でパラメータ記載」することで、プラグインに提供します。上記した「file=xxx」というのが他ページでパラメータを書く場合の例です。

補足:pukiwikiのマルチライン引数はオプションです。マルチライン引数を使いたい場合は pukiwiki.ini.php 内のでdefine指定を「0」に変更する必要があります。

define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', 0); // 1 = Disabled

1つ1つのパラメータは「name=value」形式、または「半角カンマ区切りの表」のいずれかで指定します。

このパラメータ指定になっていない文字列、および空白文字列は無視します:これを利用して自然文でコメント記載することが可能です。

とりあえず、以下のサンプルを提供します。

▼折れ線グラフ

以下のヒストグラム・円グラフは、マルチライン引数で実施した例です。

▼円グラフ
▼ヒストグラム
▼グリッドマップ
▼メーター
▼レーダーチャート

グラフ個別の説明はこちら

その他詳細説明

非常に多数のパラメータ指定をサポートしています。またグラフによってサポート内容ももちろん変わります
とりあえず、上記サンプル内に自然言語でコメントしたので、そちらを参照してください。

  • 多くのパラメータは省略可能です。
    最悪、表形式のデータだけあれば、グラフ自体は作成できます。
  • パラメータの重複指定について
    • 基本的には、同じパラメータを重複して指定した場合「あとから指定した値」だけを利用します。
    • データそのもの、およびデータ名を参照するパラメータは、データ名が異なる場合別データとして扱います。同名データは後から指定したものだけを利用します。
  • パラメータの「ファイルでの指定」と「マルチラインでの指定」は併用できます。
    • これを利用することで、例えば「ファイルにグラフのテンプレート的なパラメータ」、「マルチラインでグラフの固有データ」というような指定をすることで、同じフォーマットでの別グラフを容易に作れます。

技術的な話。

(例えば)graphline(折れ線グラフプラグイン)ではなく svggraphプラグインにしている理由

  • ものすごく単純にいうと、「データの扱い方はどのグラフでも同じだろう」「グラフを書く上で共通の仕組みがあるだろう」という見切り発車でした。同じようなコードを何度も書くのを嫌がった&メンテ性でそっちがいいだろう、という感じ。
  • 実際は、あまり共通点もないので、わりと再開発しているのが苦しい orz
    • 一応見直しを行っていて、後述の「色の自動選択」や、タイトルや凡例の生成などはライブラリ的に共通コードにしています。

グラフ作成について

  • 基本的には、パラメータを元にごりごりSVGを構築しているだけなので、技術的な話はあんまり・・・

色の自動選択について

  • グラフの色指定を省略した場合、プラグインで色を自動選択します。
    仕組みとしては、「使っていい色のリスト」を持っていて、それを順に選んでいるだけです。
    • 色のリストはかなり限定的なので、もう少しいい方法がないか検討する余地あり。

ToDo自分メモ。気になっていること。

  • 円グラフの表示テキストの位置、自動生成しているが、微調整できるようにしたい気がする。ver0.07で対応
  • 類似:レーダーチャートの軸の名称の位置、これも微調整したい。ver0.07で対応
  • offsetとかの位置で、現状正の値しか指定できない。マイナス指定もできるべき。ver0.07で対応
  • 線の太さや形状(破線とか)も指定できたほうがいいかも。ver0.08で対応
  • タイトルの文字装飾(色やアンダーバー)は必要になるのでは。これも含めて、スタイル指定方法があったほうがいい。ver0.08で対応
  • 折れ線やレーダーでは線の上にマーカーを描きたいことがある。ver0.08で対応
  • 例えば円グラフやメータなどで「塗りつぶしの上に文字を描く」ケースがある。塗りつぶし色に応じて文字の白・黒反転などあったほうがいいのでは(省略時の自動指定の他に、例えば現状の例でいえばメーターの0〜50までは白文字、60〜100までは黒文字というようなイメージ

コメント

ご意見などがあれば。


お名前:

  • サイト見つけられて良かったです!ゆっくりでいいので、背景色対応とスマホ対応して頂けるということで、ありがとうございます、助かります。 -- nattu 2024-02-29 (木) 23:54:06
  • To. nattuさん
    ご連絡ありがとうございます。
    サイトも見つけました:バグとか仕様上の問題があることがわかりましたので、大変助かります。
    確かに言われてみれば、背景白でないサイトは普通にあるので、ダークモードというか背景色対応はあるべきですし。昨今を考えればスマホでの表示確認も必要ですよね。ちょっと忙しくてすぐにはできないですが、参考にして修正したいと思います。ありがとうございます。 -- ともせ%管理人 2024-02-29 (木) 22:39:05
  • レーダーチャートプラグインを一部を変更して導入してみました。
    ・ダークモード対応
    ・scaleに文字を追加出来るように引数scalevalueを追加
    ・スマホブラウザ表示が崩れる不具合修正
    一応スマホ対応はできたので、ソースはとりあえず自分のサイトに載せておきます。
    削除すべきなら消します。
    (リンクは張れなかった)
    -- nattu 2024-02-28 (水) 21:11:21
  • 一部変更して使わせてもらいます! -- nattu 2024-02-27 (火) 02:49:11
▼過去ログ:PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK の問題?
お名前: