コード例 #1
0
ファイル: ChartTest.cs プロジェクト: Sony-NS/SharpMap
        public void BindToFunctionWithNaNValuesWithDateTimeArgument()
        {
            //setup a 2D function and fix one dimension
            IFunction function = new Function();

            function.Arguments.Add(new Variable <DateTime>("x"));
            function.Components.Add(new Variable <double>("y"));

            function[new DateTime(2000, 1, 1)] = 2.0;
            function[new DateTime(2001, 1, 1)] = 3.0;
            function[new DateTime(2002, 1, 1)] = double.NaN;
            function[new DateTime(2003, 1, 1)] = 4.0;

            ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries();
            var component = function.Components[0];
            var variable  = function.Arguments[0];

            lineChartSeries.XValuesDataMember = variable.DisplayName;
            lineChartSeries.YValuesDataMember = component.DisplayName;

            var functionBindingList = new FunctionBindingList(function);

            lineChartSeries.DataSource = functionBindingList;

            Assert.AreEqual(4, lineChartSeries.XValues.Count);
            Assert.AreEqual(4, lineChartSeries.YValues.Count);

            var chartView1 = new ChartView();

            chartView1.Chart.Series.Add(lineChartSeries);

            WindowsFormsTestHelper.ShowModal(chartView1);
        }
コード例 #2
0
        public void ClearFunctionThatIsBoundToDecorator()
        {
            IFunction function = new Function("time series");

            function.Arguments.Add(new Variable <DateTime>("time"));
            function.Components.Add(new Variable <double>("water_discharge"));

            // set initial values
            DateTime time1 = DateTime.Now;
            DateTime time2 = time1.AddMinutes(1);
            DateTime time3 = time2.AddMinutes(1);

            function[time1] = 0.0;
            function[time2] = 1.0;
            function[time3] = 2.0;

            ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries();

            lineChartSeries.XValuesDataMember = function.Arguments[0].DisplayName;
            lineChartSeries.YValuesDataMember = function.Components[0].DisplayName;

            var control = new Control();

            WindowsFormsTestHelper.Show(control);

            var functionBindingList = new FunctionBindingList(function)
            {
                SynchronizeInvoke = control
            };

            lineChartSeries.DataSource = functionBindingList;

            function.Clear();
        }
コード例 #3
0
        public void Show()
        {
            IFunction function1 = GetFunction1Arg1Comp();
            IFunction function2 = GetFunction1Arg1Comp();
            IFunction function3 = GetFunction1Arg1Comp();

            function1[1.0] = 2.0;
            function1[2.0] = 5.0;
            function1[3.0] = 1.0;

            function2[1.0] = 20.0;
            function2[2.0] = 50.0;
            function2[3.0] = 10.0;

            function3[3.0] = 20;
            function3[4.0] = 50;

            var view = new ChartView();

            ILineChartSeries lineSeries1 = GetLineSeries(function1, view);
            ILineChartSeries lineSeries2 = GetLineSeries(function2, view);
            ILineChartSeries lineSeries3 = GetLineSeries(function3, view);

            view.Chart.Series.Add(lineSeries1);
            view.Chart.Series.Add(lineSeries2);
            view.Chart.Series.Add(lineSeries3);

            var tool = view.NewSeriesBandTool(lineSeries1, lineSeries2, Color.Green);

            WindowsFormsTestHelper.ShowModal(view);
        }
コード例 #4
0
ファイル: SeriesTest.cs プロジェクト: Sony-NS/SharpMap
        public void SeriesChangesWhenFunctionBindingListChanges()
        {
            IFunction function  = new Function();
            IVariable yVariable = new Variable <double>("y");
            IVariable xVariable = new Variable <double>("x");

            function.Arguments.Add(xVariable);
            function.Components.Add(yVariable);

            function[1.0] = 2.0;
            function[2.0] = 5.0;
            function[3.0] = 1.0;

            ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries();

            ls.YValuesDataMember = function.Components[0].DisplayName;
            ls.XValuesDataMember = function.Arguments[0].DisplayName;

            var synchronizeObject = new Control();

            synchronizeObject.Show();

            var functionBindingList = new FunctionBindingList(function)
            {
                SynchronizeInvoke = synchronizeObject
            };

            ls.DataSource = functionBindingList;

            //a change in the function should change the series
            function[1.0] = 20.0;

            //wait for the series to get refreshed
            Assert.AreEqual(20, ls.YValues[0]);
        }
コード例 #5
0
        private static ILineChartSeries GetLineSeries(IFunction function, ChartView view)
        {
            ILineChartSeries ls = ChartSeriesFactory.CreateLineSeries();

            ls.YValuesDataMember = function.Components[0].DisplayName;
            ls.XValuesDataMember = function.Arguments[0].DisplayName;

            var functionBindingList = new FunctionBindingList(function)
            {
                SynchronizeInvoke = view
            };

            ls.DataSource = functionBindingList;
            return(ls);
        }
コード例 #6
0
        public void AreaSeriesView()
        {
            ChartView chartView = new ChartView();

            ILineChartSeries series = ChartSeriesFactory.CreateLineSeries();

            series.DataSource        = InitTable();
            series.XValuesDataMember = "Y";
            series.YValuesDataMember = "Z";
            chartView.Chart.Series.Add(series);


            WindowsFormsTestHelper windowsFormsTestHelper = new WindowsFormsTestHelper();

            windowsFormsTestHelper.ShowControlModal(chartView);
        }
コード例 #7
0
ファイル: ChartViewTest.cs プロジェクト: Sony-NS/SharpMap
        private static IChart CreateMultipleSeriesChart()
        {
            IChart chart = new Chart();

            var dataTable = new DataTable("sinandcosinus");

            dataTable.Columns.Add("X", typeof(double));
            dataTable.Columns.Add("sin", typeof(double));
            dataTable.Columns.Add("cos", typeof(double));

            const double pi2 = Math.PI * 2;

            for (int i = 0; i < 100; i++)
            {
                double  angle = i * (pi2 / 100);
                DataRow row   = dataTable.NewRow();
                row["X"]   = angle;
                row["sin"] = Math.Sin(angle);
                row["cos"] = Math.Cos(angle);
                dataTable.Rows.Add(row);
            }

            ILineChartSeries sin = ChartSeriesFactory.CreateLineSeries();

            sin.Title             = "sinus";
            sin.DataSource        = dataTable;
            sin.XValuesDataMember = "X";
            sin.YValuesDataMember = "sin";
            chart.Series.Add(sin);
            sin.BrushColor     = Color.Red;
            sin.PointerVisible = false;

            ILineChartSeries cos = ChartSeriesFactory.CreateLineSeries();

            cos.Title             = "cosinus";
            cos.DataSource        = dataTable;
            cos.XValuesDataMember = "X";
            cos.YValuesDataMember = "cos";
            chart.Series.Add(cos);
            cos.BrushColor     = Color.Blue;
            cos.PointerVisible = false;

            chart.Legend.Visible = true;
            return(chart);
        }
コード例 #8
0
        public void ChartWithFunctionAsSeriesSource()
        {
            // create function

            var fn = new Function();
            var x  = new Variable <double>("x");
            var y  = new Variable <double>("y");

            fn.Arguments.Add(x);
            fn.Components.Add(y);

            fn[2.5] = 33.3;
            fn[0.5] = 13.3;
            fn[1.5] = 4.0;

            var chartView1 = new ChartView();// { Data = chart };

            // create chart and add function as a data source using object adapter class FunctionSeriesDataSource
            // var chart = new Chart();

            ILineChartSeries series = ChartSeriesFactory.CreateLineSeries();

            series.DataSource = new FunctionBindingList(fn)
            {
                SynchronizeInvoke = chartView1
            };
            series.XValuesDataMember = x.DisplayName;
            series.YValuesDataMember = y.DisplayName;

            //chart.Series.Add(series);

            // TODO: add asserts
            // TODO: make all windows forms public from WindowsFormsTest which shows and hides forms on build server

            // show form
            chartView1.Chart.Series.Add(series);

            // set colors afterwards. TChart changes colors when adding a series to ChartView
            series.LinePenColor = Color.Black;

            //var form = new Form {Width = 600, Height = 100};
            //form.Controls.Add(chartView1);
            WindowsFormsTestHelper.ShowModal(chartView1);
        }
コード例 #9
0
        public void BindToFilteredFuntion()
        {
            //setup a 2D function and fix one dimension
            IFunction       function = new Function();
            IVariable <int> x        = new Variable <int>();

            function.Arguments.Add(x);
            function.Arguments.Add(new Variable <int>("Y"));
            function.Components.Add(new Variable <int>());

            function[0, 0] = 2;
            function[0, 1] = 3;
            function[1, 0] = 1;
            function[1, 1] = 4;

            IFunction filteredFunction = function.Filter(new VariableValueFilter <int>(x, 0));

            ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries();
            var variable  = filteredFunction.Arguments[1];
            var component = filteredFunction.Components[0];

            lineChartSeries.XValuesDataMember = variable.DisplayName;
            lineChartSeries.YValuesDataMember = component.DisplayName;

            var functionBindingList = new FunctionBindingList(filteredFunction);

            lineChartSeries.DataSource = functionBindingList;
            while (functionBindingList.IsProcessing)
            {
                Application.DoEvents();
            }

            Assert.AreEqual(2, lineChartSeries.XValues.Count);
            Assert.AreEqual(2, lineChartSeries.YValues.Count);
            Assert.AreEqual(0.0, lineChartSeries.XValues[0]);
            Assert.AreEqual(1.0, lineChartSeries.XValues[1]);
            Assert.AreEqual(2.0, lineChartSeries.YValues[0]);
            Assert.AreEqual(3.0, lineChartSeries.YValues[1]);
        }
コード例 #10
0
        public void HidingPointWithZeroY()
        {
            double?[] X = new double?[] { 0.0, 1.0, 3.0, 4.0, 5.0, 7.0, 8.0 };
            double?[] Y = new double?[] { 0.0, 1.0, 0.5, 0.0, 5.0, 3.0, 4.0 };

            IChartView view = new ChartView();

            ILineChartSeries series = ChartSeriesFactory.CreateLineSeries();

            series.NoDataValues.Add(1.0);
            series.Add(X, Y);
            view.Chart.Series.Add(series);
            //CustomPoint customPoint = ((TeeChartSeriesDecorator)((LineSeries) series).decorator).series;
            //customPoint.DefaultNullValue = 3.0;
            //customPoint.YValues[0] = 89;
            //customPoint.SetNull(0);
            ////customPoint.SetNull(3);
            ////customPoint.YValues[3] = 0;
            //customPoint.TreatNulls = TreatNullsStyle.DoNotPaint;

            WindowsFormsTestHelper.ShowModal((UserControl)view);
        }
コード例 #11
0
        public void TestOneSeriePlot()
        {
            IWorkbook     wb      = new XSSFWorkbook();
            ISheet        sheet   = new SheetBuilder(wb, plotData).Build();
            IDrawing      Drawing = sheet.CreateDrawingPatriarch();
            IClientAnchor anchor  = Drawing.CreateAnchor(0, 0, 0, 0, 1, 1, 10, 30);
            IChart        chart   = Drawing.CreateChart(anchor);

            IChartAxis bottomAxis = chart.ChartAxisFactory.CreateCategoryAxis(AxisPosition.Bottom);
            IChartAxis leftAxis   = chart.ChartAxisFactory.CreateValueAxis(AxisPosition.Left);

            ILineChartData <string, double> lineChartData =
                chart.ChartDataFactory.CreateLineChartData <string, double>();

            IChartDataSource <String>         xs     = DataSources.FromStringCellRange(sheet, CellRangeAddress.ValueOf("A1:J1"));
            IChartDataSource <double>         ys     = DataSources.FromNumericCellRange(sheet, CellRangeAddress.ValueOf("A2:J2"));
            ILineChartSeries <string, double> series = lineChartData.AddSeries(xs, ys);

            Assert.IsNotNull(series);
            Assert.AreEqual(1, lineChartData.GetSeries().Count);
            Assert.IsTrue(lineChartData.GetSeries().Contains(series));

            chart.Plot(lineChartData, bottomAxis, leftAxis);
        }
コード例 #12
0
        public void ThrowExceptionOnSettingInvalidDataSource()
        {
            ILineChartSeries lineChartSeries = ChartSeriesFactory.CreateLineSeries();

            lineChartSeries.DataSource = Enumerable.Range(1, 3);
        }