GTK में चार्ट #

मुझे बार-बार अपने अनुप्रयोगों में सरल ग्राफ़ बनाने की आवश्यकता थी, लेकिन हर बार मेरे पास सही उपकरण नहीं था। इस बार मुझे NPlot लाइब्रेरी मिली, जो मुझे काफी सुविधाजनक लगी



NPlot इतना अच्छा क्यों है? चार्टिंग के लिए एक पुस्तकालय से बहुत दूर है , लेकिन उनमें से कई केवल .NET के तहत काम करते हैं या Windows.Forms से भी जुड़े हुए हैं। लेकिन मुझे क्रॉस-प्लेटफॉर्म में दिलचस्पी है, यानी मुझे मोनो और 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()








* इस सोर्स कोड को सोर्स कोड हाइलाइटर के साथ हाइलाइट किया गया था।




परिणाम एक सरल और उच्च गुणवत्ता वाली छवि है।

छवि



जैसा कि मैं इसे समझता हूं, कार्यक्षमता इस तक सीमित नहीं है और परियोजना अभी तक मृत नहीं है ( सोर्सफोर्ज पर अंतिम "कोड कमिटेड " संदेश केवल 64 दिन पहले था)। जैसा कि मैं NPlot का अध्ययन करता हूं, मैं लेख को पूरक करूंगा।



All Articles