Upload
phungdang
View
228
Download
0
Embed Size (px)
Citation preview
2013 年 大統一 Debian 勉強会
1/43
ngraph-gtk で楽々グラフ作成伊東宏之
2013 年 大統一 Debian 勉強会
2/43
Level up Debian
» ngraph-gtk: wheezy からオフィシャルパッケージに· Maintainer: Koichi Akabe さん
· Co-maintainer: Ito Hiroyuki
» ngraph-gtk をデータ処理、グラフ作成に活用
» ngraph-gtk の開発で level up
2013 年 大統一 Debian 勉強会
3/43
ngraph-gtk の概要
2013 年 大統一 Debian 勉強会
4/43
Ngraph とは?
» 2 次元散布図を作成
» Satoshi ISHIZAKA さん作
» MS-DOS on PC-9801 環境では比較的メジャーなソフト
» 1996 年 Windows 版(シェアウェア → 2010 年フリーウェア)
» 1998 年 Linux 版 (2001 年フリーソフト (GPL))UNIX 系 OS で動作可能
2013 年 大統一 Debian 勉強会
5/43
ngraph-gtk とは?
» Linux 版 Ngraph から派生
» ウィジェットライブラリをMotif から GTK+ に変更
» 個人的に使いやすいように機能追加・仕様変更
» 動作の高速化
» Windows でも動作
2013 年 大統一 Debian 勉強会
6/43
ngraph-gtk
» 開発の動機· 環境設定が面倒 (フォント、印刷、日本語…)
» 開発のメリット· 統一された look & feel
· Pango による国際化テキスト対応
· Cairo による統一された画面、画像、印刷出力
· GTK+ の便利な機能を活用
· 使いやすいように機能追加
2013 年 大統一 Debian 勉強会
7/43
ngraph-gtk で出来ること
2013 年 大統一 Debian 勉強会
-2 2
20
40
8/43
できること - XYグラフ作成
» 散布図
» 棒グラフ
» エラーバー
» フィッティング
Double Gaussian Fit
0
peak-1: (-1.32, +32)peak-2: (+1.42, +6.14)
y = a1 e-a2(x-a3)
2
+ a4 e-a5(x-a6)
2
+a7
2013 年 大統一 Debian 勉強会
-20 0 20
-20
0
20
9/43
できること - XYグラフ作成
» 矢印
» 矩形
» 多角形
X
Y
2013 年 大統一 Debian 勉強会
2013
-06-
12
2013
-06-
17
2013
-06-
22
2013
-06-
27
100
101
10/43
できること - XYグラフ作成
» 日付軸
» 逆数軸・対数軸
» グリッド線
» 傾いたグラフ· 手動設定
» 斜交座標· 手動設定
2013 年 大統一 Debian 勉強会
11/43
できないこと
» 円グラフ・帯グラフは描けません頑張れば出来なくもないけど…
· 数式変換で頑張る
· スクリプトで頑張る
2013 年 大統一 Debian 勉強会
12/43
できること - お絵かき
» グラフのキャプション作成機能
» 頑張れば実験配置図程度なら描けます
frep
1GHzBPF
PZT
freqencycounter 1
89GHz GunnOscillater
BPF freqencycounter 2
Hydrogenmaser
BPF
Waveguide-type3dB coupler
fs pulseEr fiber laser
frep servoelectronics Synthesizer
Synthesizer
PLL
2013 年 大統一 Debian 勉強会
13/43
できること - 各種自動処理
» Ngraph script
· sh と同じ文法でプログラム可能
· グラフもスクリプトとして保存される
· Xサーバーは不要
» 自動処理の例· グラフの自動作成
· キャプションの自動作成など (アドイン)ngraph-gtk-addins-base, graph-gtk-addins
2013 年 大統一 Debian 勉強会
14/43
できること - 各種自動処理
» 外部プログラムの利用
» TeX 数式のインポート (pdfLaTeX)
· ngraph-gtk-addin-tex-equation
» PostScript ファイルのインポート· pstoedit を利用
· ngraph-gtk-addin-import-ps
» xfig 形式に変換してから独自の画像フォーマットに再変換
2013 年 大統一 Debian 勉強会
15/43
できること - 各種自動処理
» 自動処理の例· その他プログラム次第このプレゼンは ngraph-gtk で作成・表示しています
· プレビューアにイベント待ち機能フルスクリーン表示機能を追加
· 簡単なコマンドを記述したファイルを読み込んで表示
· PDF への出力も可能
2013 年 大統一 Debian 勉強会
16/43
簡単な使い方
2013 年 大統一 Debian 勉強会
17/43
簡単な使い方
» スペース、コンマなどで区切られた x, y データを用意· 1行1データのasciiテキストファイル
» 「ngraph データファイル」で起動
ngraph test.dat
» 必要に応じて、軸ラベルやキャプションを追加
2013 年 大統一 Debian 勉強会
18/43
簡単な使い方 - (多分) わかりにくい点
» 「点と線」のプロットは同じデータを点と線の各プロットに2回使います。
· 「ファイルリスト」で「Ins」キーを押すのが楽
» 「軸のラベル」や「グラフのタイトル」専用の機能はありません。
· テキストを好みの場所に配置します。
2013 年 大統一 Debian 勉強会
19/43
簡単な使い方 - (多分) わかりにくい点
» グラフは設定やキャプションなどが保存されます。· データを削除・移動などすると描画できなくなります。
· データ込みで保存する機能もあります。→読み込み時にデータが展開されます。
» 詳しくは ngraph-gtk-doc パッケージでインストールされるマニュアルを参照してください。
2013 年 大統一 Debian 勉強会
20/43
ngraph-gtk の改善点数式変換機能
2013 年 大統一 Debian 勉強会
21/43
数式変換機能
» 生データを数式変換してプロット
» ユーザー定義関数によるフィッティング
» 数値パラメーターの設定
2013 年 大統一 Debian 勉強会
22/43
数式変換機能
» ngraph-gtk では新しく書きなおし· 高速化
· 多機能化
· メンテナンス性向上
» 言語処理系の勉強も兼ねてスキャナ・パーサを自作
2013 年 大統一 Debian 勉強会
23/43
数式変換機能
» 従来· 数式設定時:演算子・関数等を1バイトのIDに変換
数値リテラルを浮動小数点に変換
· 計算時:構文解析・計算
» 新しいコード· 数式設定時:構文木を構築
· 計算前:簡単な最適化
· 計算時:構文木を評価
2013 年 大統一 Debian 勉強会
24/43
数式変換機能 - 高速化
» 10 000 000 行のデータを読み込んで数式変換設定の有・無による実行時間を比較
· X データ変換数式:X/MINX+Y/200
· Y データ変換数式:Y/MAXY*PI-200
· ngraph-gtk: 12.021 〜 13.762 秒Ngraph: 25.436 〜 26.545
2013 年 大統一 Debian 勉強会
25/43
数式変換機能 - 高速化
» 最適化· 定数を数値に変換
· 数値のみの項は事前に計算
· 数値による割り算は掛け算に変換
· 1.0 による掛け算・割り算は無視
· 1+2+3+4+5+6+7+8+9+10+X/10=55+X*0.1
· X/10+1+2+3+4+5+6+7+8+9+10=(((((((((((X*0.1)+1)+2)+3)+4)+5)+6)+7)+8)+9)+10)
2013 年 大統一 Debian 勉強会
26/43
数式変換機能 - 多機能化
» 変数への代入、配列、関数定義などの構文を追加
» 組み込み関数を多数追加
» 数式設定時に文法エラーを検出
2013 年 大統一 Debian 勉強会
27/43
数式変換機能 - メンテナンス性向上
» 従来· 約 400 〜 500 行の 3 個の関数で構成
(引数は 17 〜 43 個)
» 新しいコード· スキャナ、パーサ、関数・定数定義などを明確に分離
· メタプログラミングを活用 (関数、定数、演算子定義)
· 定数、関数は簡単に追加可能(演算子の追加はパーサなどの変更が必要)
2013 年 大統一 Debian 勉強会
28/43
数式変換機能 - 今後の改善
» 高速化· バイトコードまでコンパイル
· 最適化で SQRT(2) などを数値に変換→副作用のある関数との区別が必要
» 複数行の数式を設定可能にする (GUI)
· 履歴による補完も便利なので1行入力 (GtkEntry) と併用?
2013 年 大統一 Debian 勉強会
29/43
ngraph-gtk の改善点その他
2013 年 大統一 Debian 勉強会
30/43
その他の改善点
» オブジェクト、シェルコマンドなどの探索· 従来:線形探索
· ngraph-gtk:ハッシュ
» ファイル読込· 読み込み時の無駄な処理を見直し
» 10 000 000 行のデータを数式変換なしで読み込み· 従来:約 39.6 秒
· ngraph-gtk:約 16.6 秒
2013 年 大統一 Debian 勉強会
31/43
その他の改善点
» 数式変換、テキスト入力などで履歴による補完が可能
» 図形描画機能の強化· 曲線に矢印をつける、曲線の塗りつぶしなど
» スクリプト用機能の強化· オブジェクトに各種機能追加
» etc.
2013 年 大統一 Debian 勉強会
32/43
GTK+ のこと
2013 年 大統一 Debian 勉強会
33/43
GTK+ の不具合 (1)
» GtkColorButton をクリックして表示されるダイアログで現在の色が選択されていないhttps://bugzilla.gnome.org/show_bug.cgi?id=676198
· version 3.6.0 で修正済み
» GtkColorChooserDialog の「+」で新規の色を作成する時に現在の色が反映されないhttps://bugzilla.gnome.org/show_bug.cgi?id=676199
· 不具合ではないとして取り下げ
2013 年 大統一 Debian 勉強会
34/43
GTK+ の不具合 (2)
» GtkCellRendererSpin で値を編集した時に、不正な関数呼び出しが起こるhttps://bugzilla.gnome.org/show_bug.cgi?id=691592
· アクセシビリティのためのコールバックを登録するだけで削除しないため
· version 3.8.0 で修正済み
· GtkAdjustment を複数のスピンボタンで使いまわした時に、不要なコールバックが呼び出される不具合が未解決
2013 年 大統一 Debian 勉強会
35/43
GTK+ の不具合 (3)
» fa_IR など右から左へ記述する言語でGtkTreeView のグリッド表示がおかしくなる
· version 3.10.0 で修正予定
» fa_IR など右から左へ記述する言語でGtkMessageDialog のメッセージ表示位置がおかしくなる
· 未報告
2013 年 大統一 Debian 勉強会
36/43
GTK+ の不具合 (4)
» GtkComboBox で GtkCellRendererToggleの表示が変
· 未報告
2013 年 大統一 Debian 勉強会
37/43
GTK+ の不具合 (5)
» GtkCellRendererSpin で値を編集するときに時に、スピンボタンが邪魔
· 未報告
2013 年 大統一 Debian 勉強会
38/43
今後の課題
2013 年 大統一 Debian 勉強会
39/43
今後の課題 (1)
» MVC の View と Controller をもっと分離したい· スクリプトをもっと便利にできそう
· 移植性の向上
» スクリプトが遅い、複雑な処理に向いていない· mruby 組み込み
· 言語処理系を自作
» 互換性や作業量を考えるとだいぶ先の話?
2013 年 大統一 Debian 勉強会
40/43
今後の課題 (2)
» ドキュメントの充実· オブジェクトの仕様
· スクリプトのコマンド仕様
» マニュアル、PO ファイルの翻訳
2013 年 大統一 Debian 勉強会
41/43
おわり
2013 年 大統一 Debian 勉強会
42/43
発表資料
» 下記URLからダウンロードできます。· http://homepage3.nifty.com/slokar/ngraph/debian_2013_ito.tar.gz
· サンプルデータ、プレゼン用スクリプトなども含まれています
· ぜひ実際に使ってみてください
2013 年 大統一 Debian 勉強会
43/43
自由なソフトに関わった全ての方々に感謝します