Beispiel #1
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;
        }
Beispiel #2
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;
        }