Beispiel #1
0
        public void Plot(IProtocolChartData dataToPlot)
        {
            Clear();
            chart.DataSource       = dataToPlot.DataTable;
            chart.SeriesDataMember = dataToPlot.GroupingName;
            chart.InitializeColor();

            // Specify the date-time argument scale type for the series,
            // as it is qualitative, by default.
            chart.SeriesTemplate.ArgumentScaleType  = ScaleType.Numerical;
            chart.SeriesTemplate.ArgumentDataMember = dataToPlot.XValue;
            chart.SeriesTemplate.ValueScaleType     = ScaleType.Numerical;
            chart.SeriesTemplate.ValueDataMembers.AddRange(new[] { dataToPlot.YValue });
            chart.SeriesTemplate.LabelsVisibility = DefaultBoolean.False;
            chart.SeriesTemplate.View             = new StackedBarSeriesView();
            var diagram = (XYDiagram)chart.Diagram;

            ////// Access the type-specific options of the diagram.
            diagram.AxisX.Title.Text       = XAxisTitle;
            diagram.AxisX.Title.Visibility = DefaultBoolean.True;
            diagram.AxisY.Title.Text       = YAxisTitle;
            diagram.AxisY.Title.Visibility = DefaultBoolean.True;
            diagram.AxisX.WholeRange.Auto  = true;
            diagram.AxisX.WholeRange.SetMinMaxValues(dataToPlot.XMin - BarWidth, dataToPlot.XMax + BarWidth);
            chart.Legend.LegendPosition(LegendPositions.RightInside);
            diagram.SecondaryAxesY.Clear();

            SecondaryAxisY axisY2 = null;

            if (dataToPlot.NeedsMultipleAxis)
            {
                axisY2 = new SecondaryAxisY("Y2");
                diagram.SecondaryAxesY.Add(axisY2);
                axisY2.Title.Text       = Y2AxisTitle;
                axisY2.Title.Visibility = DefaultBoolean.True;
            }

            foreach (Series series in chart.Series)
            {
                var view = ((BarSeriesView)series.View);
                view.BarWidth = BarWidth;
                if (dataToPlot.NeedsMultipleAxis)
                {
                    if (dataToPlot.SeriesShouldBeOnSecondAxis(series.Name))
                    {
                        view.AxisY = axisY2;
                    }
                }
                series.Visible = true;
            }
        }