private AxisOptions getAxisOptions(DistributionSettings settings, ContinuousDistributionData data) { var axisOptions = new AxisOptions(DefaultConverter.Instance) { XLabel = settings.XAxisTitle, YLabel = settings.YAxisTitle, Title = settings.PlotCaption, EnlargeLimits = false, YMin = 0, YMajorGrid = true, LegendOptions = new LegendOptions { LegendPosition = LegendOptions.LegendPositions.NorthEast } }; if (isSingleValueDistribution(data)) { var value = getSingleValueDistributionValue(data); if (!float.IsNaN(value)) { axisOptions.XMin = value - (float)data.BarWidth; axisOptions.XMax = value + (float)data.BarWidth; axisOptions.XTicks = new [] { value }; } } return(axisOptions); }
private void plot <TObjectToPlot, TVectorialParametersContainer>(TVectorialParametersContainer populationDataCollector, TObjectToPlot objectToPlot, Func <TVectorialParametersContainer, DistributionSettings, TObjectToPlot, IDimension, Unit, ContinuousDistributionData> distributionCreator, Action <TObjectToPlot, DistributionSettings, Unit> updatePlotOptionAction, DistributionSettings settings, IDimension dimension, Unit displayUnit) where TObjectToPlot : IWithDimension { var dimensionToUse = dimension ?? objectToPlot.Dimension; var settingsToUse = settings ?? new DistributionSettings(); updatePlotOptionAction(objectToPlot, settingsToUse, displayUnit); _view.Plot(distributionCreator(populationDataCollector, settingsToUse, objectToPlot, dimensionToUse, displayUnit), settingsToUse); }
private static void updateStandardSettings(DistributionSettings settings) { if (string.IsNullOrEmpty(settings.YAxisTitle)) { settings.YAxisTitle = settings.AxisCountMode.ToString(); } if (string.IsNullOrEmpty(settings.SelectedGender)) { settings.SelectedGender = CoreConstants.Population.AllGender; } }
protected override void Context() { base.Context(); _population = A.Fake <IPopulationDataCollector>(); _pkParameter = new QuantityPKParameter { Dimension = A.Fake <IDimension>(), Name = "toto", QuantityPath = "A|B|C" }; A.CallTo(() => _pkParameterRepository.DisplayNameFor(_pkParameter.Name)).Returns("totoDisplay"); _settings = new DistributionSettings(); _displayUnit = A.Fake <Unit>(); _data = new ContinuousDistributionData(AxisCountMode.Count, 10); A.CallTo(() => _displayUnitRetriever.PreferredUnitFor(_pkParameter.Dimension)).Returns(_displayUnit); A.CallTo(() => _distributionDataCreator.CreateFor(_population, _settings, _pkParameter, _pkParameter.Dimension, _displayUnit)).Returns(_data); }
private void updatePlotOptionsDefaultsFor(string xCaption, DistributionSettings settings, string plotCaption = null) { if (string.IsNullOrEmpty(settings.XAxisTitle)) { settings.XAxisTitle = xCaption; } updateStandardSettings(settings); if (string.IsNullOrEmpty(settings.PlotCaption)) { settings.PlotCaption = plotCaption ?? xCaption; } }
protected AdvancedParameterDistributionPresenter(IAdvancedParameterDistributionView view, IPopulationParameterGroupsPresenter parametersPresenter, IRepresentationInfoRepository representationInfoRepository, IEntityPathResolver entityPathResolver, IPopulationDistributionPresenter populationParameterDistributionPresenter, IProjectChangedNotifier projectChangedNotifier) : base(view) { _parametersPresenter = parametersPresenter; _representationInfoRepository = representationInfoRepository; _entityPathResolver = entityPathResolver; _populationParameterDistributionPresenter = populationParameterDistributionPresenter; _projectChangedNotifier = projectChangedNotifier; _defaultSettings = new DistributionSettings(); _parametersPresenter.GroupNodeSelected += (o, e) => activateNode(e.Node); _parametersPresenter.ParameterNodeSelected += (o, e) => activateNode(e.Node); _view.UpdateParameterGroupView(_parametersPresenter.View); _allParametersCache = new PathCache <IParameter>(_entityPathResolver); _view.AddDistributionView(_populationParameterDistributionPresenter.View); AddSubPresenters(_parametersPresenter, _populationParameterDistributionPresenter); }
private BarPlotOptions getBarPlotOptions(DistributionSettings settings, ContinuousDistributionData data) { var width = data.BarWidth; var shift = Helper.Length(2, Helper.MeasurementUnits.pt); if (settings.BarType == BarType.SideBySide) { width /= (double)getGroups(data).Rows.Count; } else { shift = string.Empty; } return(new BarPlotOptions { BarPlotType = getBarPlotType(settings.BarType), Width = width.ToString(CultureInfo.InvariantCulture), Shift = shift }); }
public ContinuousDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IParameter parameter, IDimension dimension, Unit displayUnit) { var allValues = parameterContainer.AllValuesFor(_entityPathResolver.PathFor(parameter)); return(CreateFor(parameterContainer, settings, allValues, dimension, displayUnit)); }
public ContinuousDistributionData CreateFor(IPopulationDataCollector populationDataCollector, DistributionSettings settings, QuantityPKParameter parameter, IDimension dimension, Unit displayUnit) { var allValues = populationDataCollector.AllPKParameterValuesFor(parameter.QuantityPath, parameter.Name); return(CreateFor(populationDataCollector, settings, allValues, dimension, displayUnit)); }
public DiscreteDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IReadOnlyList <string> allDiscreteValues, IComparer <string> comparer) { var data = new DiscreteDistributionData(settings.AxisCountMode); //all genders var allGenders = allGendersFrom(parameterContainer, allDiscreteValues.Count); int allItemsForSelectedGender = numberOfItemsFor(allGenders, settings.SelectedGender); //group the values by gender var valueGenders = allDiscreteValues.Select((value, index) => new { Value = value, Gender = allGenders[index] }) .OrderBy(x => x.Value, comparer) .GroupBy(x => x.Gender); foreach (var valueGender in valueGenders) { if (!shouldDisplayGender(valueGender.Key, settings.SelectedGender)) { continue; } var valuesByGenderAndCovariates = valueGender.GroupBy(x => x.Value).ToList(); foreach (var value in valuesByGenderAndCovariates) { double count = value.Count(); if (settings.AxisCountMode == AxisCountMode.Percent) { count = count * 100.0 / allItemsForSelectedGender; } data.AddData(value.Key, count, _representationInfoRepository.DisplayNameFor(valueGender.Key)); } } return(data); }
public void Plot(IVectorialParametersContainer vectorialParametersContainer, IReadOnlyList <string> values, string caption, IComparer <string> comparer, DistributionSettings settings) { var settingsToUse = settings ?? new DistributionSettings(); updatePlotOptionsDefaultsFor(caption, settingsToUse); _view.Plot(_distributionDataCreator.CreateFor(vectorialParametersContainer, settingsToUse, values, comparer), settingsToUse); }
public void Plot(IVectorialParametersContainer vectorialParametersContainer, string covariate, DistributionSettings settings = null) { var settingsToUse = settings ?? new DistributionSettings(); updatePlotOptionsDefaultsFor(covariate, settingsToUse); _view.Plot(_distributionDataCreator.CreateFor(vectorialParametersContainer, settingsToUse, covariate), settingsToUse); }
public void Plot(ContinuousDistributionData dataToPlot, DistributionSettings settings) { chart.Plot(dataToPlot, settings); }
public void Plot(IPopulationDataCollector populationDataCollector, QuantityPKParameter pkParameter, DistributionSettings settings = null, IDimension dimension = null, Unit displayUnit = null) { var displayUnitToUse = displayUnit ?? _displayUnitRetriever.PreferredUnitFor(pkParameter.Dimension); plot(populationDataCollector, pkParameter, _distributionDataCreator.CreateFor, updatePlotOptionsDefaultsFor, settings, dimension, displayUnitToUse); }
public DiscreteDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, string covariate) { var allValues = parameterContainer.AllCovariateValuesFor(covariate); return(CreateFor(parameterContainer, settings, allValues, Comparer <string> .Default)); }
private void updatePlotOptionsDefaultsFor(QuantityPKParameter parameter, DistributionSettings settings, Unit displayUnit) { updatePlotOptionsDefaultsFor(getTitleFor(parameter, displayUnit), settings, parameter.QuantityPath); }
private void updatePlotOptionsDefaultsFor(IParameter parameter, DistributionSettings settings, Unit displayUnit) { updatePlotOptionsDefaultsFor(getTitleFor(parameter, displayUnit), settings, _representationInfoRepository.DisplayNameFor(parameter)); }
public void Plot(DiscreteDistributionData dataToPlot, DistributionSettings settings) { chart.Plot(dataToPlot, settings); }
public ContinuousDistributionData CreateFor(IVectorialParametersContainer parameterContainer, DistributionSettings settings, IReadOnlyList <double> values, IDimension dimension, Unit displayUnit) { var allValuesInDisplayUnit = values.Select(value => dimension.BaseUnitValueToUnitValue(displayUnit, value)).ToList(); var allGenders = allGendersFrom(parameterContainer, allValuesInDisplayUnit.Count); var allValidValues = allValuesInDisplayUnit.Where(x => !double.IsNaN(x)).ToList(); var allIntervals = _binIntervalsCreator.CreateUniformIntervalsFor(allValidValues); var data = new ContinuousDistributionData(settings.AxisCountMode, allIntervals.Count); if (!allValidValues.Any()) { return(data); } int allItemsForSelectedGender = numberOfItemsFor(allGenders, settings.SelectedGender); //group the values by gender var valueGenders = allValuesInDisplayUnit.Select((value, index) => new { Value = value, Gender = allGenders[index] }) .Where(x => !double.IsNaN(x.Value)) .GroupBy(x => x.Gender) .ToList(); foreach (var interval in allIntervals) { var currentInterval = interval; foreach (var valueGender in valueGenders) { if (!shouldDisplayGender(valueGender.Key, settings.SelectedGender)) { continue; } double count = valueGender.Count(item => currentInterval.Contains(item.Value)); if (settings.AxisCountMode == AxisCountMode.Percent) { count = count * 100.0 / allItemsForSelectedGender; } data.AddData(currentInterval.MeanValue, count, _representationInfoRepository.DisplayNameFor(valueGender.Key)); } } data.XMinData = allValidValues.Min(); data.XMaxData = allValidValues.Max(); return(data); }
public void Plot(IVectorialParametersContainer vectorialParametersContainer, IParameter parameter, DistributionSettings settings = null, IDimension dimension = null, Unit displayUnit = null) { var displayUnitToUse = displayUnit ?? _displayUnitRetriever.PreferredUnitFor(parameter); plot(vectorialParametersContainer, parameter, _distributionDataCreator.CreateFor, updatePlotOptionsDefaultsFor, settings, dimension, displayUnitToUse); }