GTKのチャート#
アプリケーションで簡単なグラフを作成する必要が繰り返しありましたが、そのたびに適切なツールが手元にありませんでした。 今回、
NPlotライブラリを見つけました。これは非常に便利なように思えました。
NPlotが優れている理由 チャート用のライブラリは
1つとは
ほど遠いですが、それらの多くは.NETでのみ機能するか、Windows.Formsにあまりにも関連しています。 しかし、クロスプラットフォームに興味があります。つまり、monoとgtkと互換性のあるものが必要です。 NPlotはこれらの要件を満たしており、BSDの下でライセンスされています。
ただし、NPlotの知識は、通常のドキュメントの不足によって影が薄くなりました。 また、ライブラリに付属のテストケースは非常に機能します。
しかし、それでも、NPlotが主な機能-グラフの描画-を実行することは明らかです。したがって、私はそれを理解し、一種のドキュメントを書くことにしました。 たぶん誰かが役に立つでしょう。
まず、グラフの線自体を描画する必要があります。
// , .
double [] a = {0, 200, 140, 14, 240, 320, 150, 80, 170, 90};
//
LinePlot lp = new LinePlot();
lp.DataSource = a;
lp.Label = "My Label" ;
// . System.Drawing.Pen
lp.Pen = PenName;
//
Grid myGrid = new Grid();
// , Vertical ,
myGrid.VerticalGridType = Grid.GridType.Fine;
// Horizontal — ,
myGrid.HorizontalGridType = Grid.GridType.None;
* This source code was highlighted with Source Code Highlighter .
すべての線が描かれたら、グラフの平面に取り組み、それらが表示されるようにします。
//, —
NPlot.Gtk.PlotSurface2D plot = new NPlot.Gtk.PlotSurface2D();
// ,
plot.Clear();
//
plot.Title = "Title" ;
//
plot.Legend = new Legend();
// -
plot.Legend.AttachTo(NPlot.PlotSurface2D.XAxisPosition.Bottom, NPlot.PlotSurface2D.YAxisPosition.Right);
// ,
plot.Legend.YOffset = 16;
//
plot.Legend.HorizontalEdgePlacement = Legend.Placement.Outside;
plot.Legend.VerticalEdgePlacement = Legend.Placement.Inside;
//
plot.Padding = 40;
// ,
plot.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
//
plot.Add(myGrid);
plot.Add(lp);
// , ,
plot.YAxis1.Label = "Money" ;
// ( — )
plot.YAxis1.NumberFormat = "{0:n}" ;
//
plot.Refresh()
*このソースコードは、 ソースコードハイライターで強調表示されました。
結果は、シンプルで高品質の画像です。
私が理解しているように、機能はこれに限定されず、プロジェクトはまだ死んでいません(
Sourceforgeの最後の「Code Committed」メッセージはわずか64日前でした)。 NPlotを学習するとき、記事を補足します。
All Articles