示例#1
0
        void SetupBarPlots()
        {
            // Create a plot that uses the data source method
            var inputSocket = new List <float> {
                30, 20, 10, 20, 10, 55
            };

            var barPlot = new CPTBarPlot {
                DataSource = new BarSourceData(inputSocket),
                BaseValue  = 0,
                BarOffset  = (NSDecimal)(-0.25),
                Identifier = (NSString)"Bar Plot 1"
            };

            graph.AddPlot(barPlot);

            barPlot.Fill = new CPTFill(CPTColor.BrownColor);
            graph.AddPlot(barPlot, graph.DefaultPlotSpace);

            var space = graph.DefaultPlotSpace as CPTXYPlotSpace;

            space.ScaleToFitPlots(new CPTPlot [] { barPlot });

            decimal newYMax = (decimal)space.YRange.MaxLimit + (decimal)space.YRange.MaxLimit * 0.2m;

            space.YRange = new CPTPlotRange(-4, new NSDecimalNumber(newYMax.ToString()).NSDecimalValue);

            decimal newXMax = (decimal)space.XRange.MaxLimit + 2;
            decimal newXMin = (decimal)space.XRange.MinLimit - 1;

            space.XRange = new CPTPlotRange(new NSDecimalNumber(newXMin.ToString()).NSDecimalValue,
                                            new NSDecimalNumber(newXMax.ToString()).NSDecimalValue);
        }
示例#2
0
        void SetupScatterPlots()
        {
            // Create a plot that uses the data source method
            var dataSourceLinePlot = new CPTScatterPlot {
                CachePrecision = CPTPlotCachePrecision.Double,
                DataLineStyle  = new CPTLineStyle {
                    LineWidth = 2,
                    LineColor = CPTColor.GreenColor
                },
                // For Kang, check this out:
                DataSource = new RandomSamplesSource(),
                PlotSymbolMarginForHitDetection = 5
            };

            graph.AddPlot(dataSourceLinePlot);

            // Create a plot for the selection marker
            var selectionPlot = new CPTScatterPlot {
                CachePrecision = CPTPlotCachePrecision.Double,
                DataLineStyle  = new CPTLineStyle {
                    LineWidth = 3,
                    LineColor = CPTColor.RedColor
                },
            };

            graph.AddPlot(selectionPlot);

            var space = graph.DefaultPlotSpace as CPTXYPlotSpace;

            space.ScaleToFitPlots(new CPTPlot [] { dataSourceLinePlot });

            // Setting these will lock the scrolling on each direction:
            //space.GlobalXRange = new CPPlotRange (NSNumber.FromDouble (-1).NSDecimalValue, NSNumber.FromDouble (10).NSDecimalValue);
            //space.GlobalYRange = new CPPlotRange (NSNumber.FromDouble (-5).NSDecimalValue, NSNumber.FromDouble (10).NSDecimalValue);
        }
示例#3
0
        void SetupPlots()
        {
            // Create a plot that uses the data source method
            CPTRangePlot dataSourceLinePlot = new CPTRangePlot();

            dataSourceLinePlot.Identifier = (NSString)"Date Plot";

            // Add line style
            barLineStyle                    = new CPTLineStyle();
            barLineStyle.LineWidth          = 3f;
            barLineStyle.LineColor          = CPTColor.GreenColor;
            dataSourceLinePlot.BarLineStyle = barLineStyle;

            // Bar properties
            dataSourceLinePlot.BarWidth   = 10.0f;
            dataSourceLinePlot.GapWidth   = 20.0f;
            dataSourceLinePlot.GapHeight  = 20.0f;
            dataSourceLinePlot.DataSource = new RangeSource();

            // Add plot
            graph.AddPlot(dataSourceLinePlot);

            areaFillDefault     = CPTFill.FromColor(CPTColor.ClearColor);
            barLineStyleDefault = dataSourceLinePlot.BarLineStyle;

            var space = graph.DefaultPlotSpace as CPTXYPlotSpace;

            space.ScaleToFitPlots(new CPTPlot [] { dataSourceLinePlot });
        }
示例#4
0
        void SetupPiePlots()
        {
            // Prepare a radial overlay gradient for shading/gloss
            var color = new CPTColor(new MonoTouch.CoreGraphics.CGColor(1f, 1f, 0f));

            var overlayGradient = new CPTGradient {
                GradientType = CPTGradientType.Radial
            };

            overlayGradient.AddColorStop(color.ColorWithAlphaComponent(0.7f), 1.0f);

            // Create a plot that uses the data source method
            var piePlot = new CPTPieChart {
                PieRadius       = 130.0f,
                Identifier      = (NSString)"Pie Chart 1",
                StartAngle      = (float)Math.PI / 4f, // 0.785398163397448309616f; //M_PI_4;
                SliceDirection  = CPTPieDirection.CounterClockwise,
                BorderLineStyle = CPTLineStyle.LineStyle
            };

            var inputData = new List <float> {
                60, 20, 40
            };

            piePlot.DataSource = new PieSourceData(inputData);

            graph.AddPlot(piePlot);
        }
示例#5
0
        void SetupPiePlots()
        {
            // Prepare a radial overlay gradient for shading/gloss
            CPTColor color = new CPTColor(new MonoTouch.CoreGraphics.CGColor(1f, 1f, 0f));

            CPTGradient overlayGradient = new CPTGradient()
            {
                GradientType = CPTGradientType.Radial
            };

            //overlayGradient.AddColorStop(CPTColor.BlackColor, 0.0f);
            //overlayGradient.AddColorStop(color.ColorWithAlphaComponent(0.3f), 0.9f);
            overlayGradient.AddColorStop(color.ColorWithAlphaComponent(0.7f), 1.0f);

            // Create a plot that uses the data source method
            var piePlot = new CPTPieChart()
            {
                PieRadius       = 130.0f,
                Identifier      = (NSString)"Pie Chart 1",
                StartAngle      = (float)Math.PI / 4f,            // 0.785398163397448309616f; //M_PI_4;
                SliceDirection  = CPTPieDirection.CounterClockwise,
                BorderLineStyle = CPTLineStyle.LineStyle,
                //SliceLabelOffset = 0.0f
            };

            //TODO: This is giving a white overlay??
            piePlot.OverlayFill = new CPTFill(overlayGradient);

            var inputData = new List <float> ()
            {
                60, 20, 40
            };

            piePlot.DataSource = new PieSourceData(inputData);

            graph.AddPlot(piePlot);
        }
示例#6
0
        public virtual void AwakeFromNib()
        {
            // If you make sure your dates are calculated at noon, you shouldn't have to
            // worry about daylight savings. If you use midnight, you will have to adjust
            // for daylight savings time.
            NSDate refDate = NSDate.DateWithNaturalLanguageString ("12:00 Oct 27, 2010");
            double oneDay = 24 * 60 * 60;

            // Create graph from theme
            graph = new CPTXYGraph (CGRect.CGRectZero);
            CPTTheme theme = CPTTheme.ThemeNamed (CPTTheme.kCPTDarkGradientTheme);
            graph.ApplyTheme (theme);
            hostView.HostedGraph = graph;

            // Title
            CPTMutableTextStyle textStyle = CPTMutableTextStyle.TextStyle;
            textStyle.Color = CPTColor.WhiteColor;
            textStyle.FontSize = 18.0;
            textStyle.FontName = "Helvetica";
            graph.Title = "Click to Toggle Range Plot Style";
            graph.TitleTextStyle = textStyle;
            graph.TitleDisplacement = new CGPoint (0.0f, -20.0f);

            // Setup scatter plot space
            CPTXYPlotSpace plotSpace = graph.DefaultPlotSpace.CastTo<CPTXYPlotSpace> ();
            double xLow = oneDay * 0.5;
            plotSpace.XRange = CPTPlotRange.PlotRangeWithLocationLength (NSDecimal.FromDouble (xLow), NSDecimal.FromDouble (oneDay * 5.0));
            plotSpace.YRange = CPTPlotRange.PlotRangeWithLocationLength (NSDecimal.FromDouble (1.0), NSDecimal.FromDouble (3.0));

            // Axes
            CPTXYAxisSet axisSet = graph.AxisSet.CastTo<CPTXYAxisSet> ();
            CPTXYAxis x = axisSet.XAxis;
            x.MajorIntervalLength = NSDecimal.FromDouble (oneDay);
            x.OrthogonalCoordinateDecimal = NSDecimal.FromString ("2");
            x.MinorTicksPerInterval = 0;
            NSDateFormatter dateFormatter = new NSDateFormatter ().Autorelease<NSDateFormatter> ();
            dateFormatter.DateStyle = NSDateFormatterStyle.NSDateFormatterShortStyle;
            CPTTimeFormatter timeFormatter = new CPTTimeFormatter (dateFormatter).Autorelease<CPTTimeFormatter> ();
            timeFormatter.ReferenceDate = refDate;
            x.LabelFormatter = timeFormatter;

            CPTXYAxis y = axisSet.YAxis;
            y.MajorIntervalLength = NSDecimal.FromString (@"0.5");
            y.MinorTicksPerInterval = 5;
            y.OrthogonalCoordinateDecimal = NSDecimal.FromDouble (oneDay);

            // Create a plot that uses the data source method
            CPTRangePlot dataSourceLinePlot = new CPTRangePlot ().Autorelease<CPTRangePlot> ();
            dataSourceLinePlot.Identifier = PLOT_IDENTIFIER;

            // Add line style
            CPTMutableLineStyle lineStyle = CPTMutableLineStyle.LineStyle;
            lineStyle.LineWidth = 1.0;
            lineStyle.LineColor = CPTColor.GreenColor;
            barLineStyle = lineStyle.Retain<CPTLineStyle> ();
            dataSourceLinePlot.BarLineStyle = barLineStyle;

            // Bar properties
            dataSourceLinePlot.BarWidth = 10.0;
            dataSourceLinePlot.GapWidth = 20.0;
            dataSourceLinePlot.GapHeight = 20.0;
            dataSourceLinePlot.DataSource = this;

            // Add plot
            graph.AddPlot (dataSourceLinePlot);
            graph.DefaultPlotSpace.Delegate = this;

            // Store area fill for use later
            CPTColor transparentGreen = CPTColor.GreenColor.ColorWithAlphaComponent (0.2);
            areaFill = new CPTFill (transparentGreen);

            // Add some data
            NSMutableArray newData = new NSMutableArray();
            NSUInteger i;
            Random rand = new Random ();
            for (i = 0; i < 5; i++) {
                double xx = oneDay * (i + 1.0);
                double yy = 3.0 * rand.Next () / (double)Int32.MaxValue + 1.2;
                double rHigh = rand.Next () / (double)Int32.MaxValue * 0.5 + 0.25;
                double rLow = rand.Next () / (double)Int32.MaxValue * 0.5 + 0.25;
                double rLeft = (rand.Next () / (double)Int32.MaxValue * 0.125 + 0.125) * oneDay;
                double rRight = (rand.Next () / (double)Int32.MaxValue * 0.125 + 0.125) * oneDay;

                newData.AddObject (NSDictionary.DictionaryWithObjectsAndKeys (
                                                                              NSDecimalNumber.NumberWithDouble (xx), CPTRangePlot.FieldX,
                                                                              NSDecimalNumber.NumberWithDouble (yy), CPTRangePlot.FieldY,
                                                                              NSDecimalNumber.NumberWithDouble (rHigh), CPTRangePlot.FieldHigh,
                                                                              NSDecimalNumber.NumberWithDouble (rLow), CPTRangePlot.FieldLow,
                                                                              NSDecimalNumber.NumberWithDouble (rLeft), CPTRangePlot.FieldLeft,
                                                                              NSDecimalNumber.NumberWithDouble (rRight), CPTRangePlot.FieldRight,
                                                                              null));
            }

            plotData = newData;
        }
示例#7
0
        public virtual void AwakeFromNib()
        {
            // If you make sure your dates are calculated at noon, you shouldn't have to
            // worry about daylight savings. If you use midnight, you will have to adjust
            // for daylight savings time.
            NSDate refDate = NSDate.DateWithNaturalLanguageString ("12:00 Oct 27, 2010");
            double oneDay = 24 * 60 * 60;

            // Create graph from theme
            graph = new CPTXYGraph (CGRect.CGRectZero);
            CPTTheme theme = CPTTheme.ThemeNamed (CPTTheme.kCPTDarkGradientTheme);
            graph.ApplyTheme (theme);
            hostView.HostedGraph = graph;

            // Setup scatter plot space
            CPTXYPlotSpace plotSpace = graph.DefaultPlotSpace.CastTo<CPTXYPlotSpace> ();
            double xLow = oneDay * 0.5;
            plotSpace.XRange = CPTPlotRange.PlotRangeWithLocationLength (NSDecimal.FromDouble (xLow), NSDecimal.FromDouble (oneDay * 5.0));
            plotSpace.YRange = CPTPlotRange.PlotRangeWithLocationLength (NSDecimal.FromDouble (1.0), NSDecimal.FromDouble (3.0));

            // Axes
            CPTXYAxisSet axisSet = graph.AxisSet.CastTo<CPTXYAxisSet> ();
            CPTXYAxis x = axisSet.XAxis;
            x.MajorIntervalLength = NSDecimal.FromDouble (oneDay);
            x.OrthogonalCoordinateDecimal = NSDecimal.FromString ("2");
            x.MinorTicksPerInterval = 0;
            NSDateFormatter dateFormatter = new NSDateFormatter ().Autorelease<NSDateFormatter> ();
            dateFormatter.DateStyle = NSDateFormatterStyle.NSDateFormatterShortStyle;
            CPTTimeFormatter timeFormatter = new CPTTimeFormatter (dateFormatter).Autorelease<CPTTimeFormatter> ();
            timeFormatter.ReferenceDate = refDate;
            x.LabelFormatter = timeFormatter;

            CPTXYAxis y = axisSet.YAxis;
            y.MajorIntervalLength = NSDecimal.FromString (@"0.5");
            y.MinorTicksPerInterval = 5;
            y.OrthogonalCoordinateDecimal = NSDecimal.FromDouble (oneDay);

            // Create a plot that uses the data source method
            CPTScatterPlot dataSourceLinePlot = new CPTScatterPlot ().Autorelease<CPTScatterPlot> ();
            dataSourceLinePlot.Identifier = PLOT_IDENTIFIER;

            // Add line style
            CPTMutableLineStyle lineStyle = CPTMutableLineStyle.LineStyle;
            lineStyle.LineWidth = 3.0;
            lineStyle.LineColor = CPTColor.GreenColor;
            dataSourceLinePlot.DataLineStyle = lineStyle;

            // Add plot
            graph.AddPlot (dataSourceLinePlot);
            dataSourceLinePlot.DataSource = this;

            // Add some data
            NSMutableArray newData = new NSMutableArray();
            NSUInteger i;
            Random rand = new Random ();
            for (i = 0; i < 5; i++) {
                double xx = oneDay * (i + 1.0);
                double yy = 3.0 * rand.Next () / (double)Int32.MaxValue + 1.2;

                newData.AddObject (NSDictionary.DictionaryWithObjectsAndKeys (
                                                                              NSDecimalNumber.NumberWithDouble (xx), CPTScatterPlot.FieldX,
                                                                              NSDecimalNumber.NumberWithDouble (yy), CPTScatterPlot.FieldY,
                                                                              null));
            }

            plotData = newData;
        }