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;
            }
        }
Beispiel #2
0
        public void PlotProtocols(ICache <Compound, Protocol> protocols)
        {
            if (!protocols.Any())
            {
                _view.Clear();
                return;
            }

            var longestProtocol = protocols.LongestProtocol();
            //a good value for the bar witdh is 10 kernel unit [min]
            var timeUnit = longestProtocol.TimeUnit;

            _view.BarWidth     = _dimensionRepository.Time.BaseUnitValueToUnitValue(timeUnit, 10);
            _protocolChartData = dataToPlotFrom(protocols, timeUnit);
            _view.XAxisTitle   = Constants.NameWithUnitFor(PKSimConstants.UI.Time, timeUnit);
            _view.YAxisTitle   = Constants.NameWithUnitFor(PKSimConstants.UI.Dose, _protocolChartData.YAxisUnit);
            _view.Y2AxisTitle  = Constants.NameWithUnitFor(PKSimConstants.UI.Dose, _protocolChartData.Y2AxisUnit);
            _view.Plot(_protocolChartData);
        }