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