static void Main () { #if GTK Application.Init (); Window w = new Window ("Test"); w.DeleteEvent += delegate { Application.Quit (); }; NPlot.Gtk.PlotSurface2D plot = new NPlot.Gtk.PlotSurface2D (); PlotTest (plot); plot.Show (); w.Add (plot); w.ShowAll (); Application.Run (); #else NPlot.PlotSurface2D s = new NPlot.PlotSurface2D (); Bitmap b = new Bitmap (1000, 1000); Graphics g = Graphics.FromImage (b); g.FillRectangle (Brushes.White, 0, 0, 1000, 1000); Rectangle bounds = new Rectangle (0, 0, 1000, 1000); PlotTest (s); s.Draw (g, bounds); b.Save ("file.png", ImageFormat.Png); #endif }
private void test(Fixed _fixed) { 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 = new Pen(new SolidBrush(System.Drawing.Color.Black)); //Для лучшего вида на график наносится сетка Grid myGrid = new Grid(); //По неясной причине, Vertical обозначает горизонтальные линии, которые будут видимы в данном случае myGrid.VerticalGridType = Grid.GridType.Fine; //а Horizontal — вертикальные линии сетки, которые будут убраны myGrid.HorizontalGridType = Grid.GridType.None; 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(); plot.Show(); _fixed.Put(plot, 0, 120); }