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; } }
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); }