コード例 #1
0
        public IReadOnlyList <string> GenerateLabels(LabelGenerationOptions options, IReadOnlyList <double> intervalLimitsInDisplayUnit)
        {
            //1.. 2.. 3 => 3 limits but two labels
            int    numberOfLabels = intervalLimitsInDisplayUnit.Count - 1;
            string pattern        = options.Pattern;

            if (!options.IsValid)
            {
                return(new string[numberOfLabels].InitializeWith(pattern));
            }

            var nextPattern = getGenerator(options.Strategy);
            var labels      = new List <string>();

            //starts at 1 as it makes label generation easier to read for user
            for (int i = 1; i <= numberOfLabels; i++)
            {
                var currentPattern = nextPattern(i);
                labels.Add(pattern.Replace(LabelGenerationOptions.ITERATION_PATTERN, currentPattern));
            }

            updateLabelsWithLimits(labels, intervalLimitsInDisplayUnit, options);

            return(labels);
        }
コード例 #2
0
        private void updateLabelsWithLimits(List <string> labels, IReadOnlyList <double> limits, LabelGenerationOptions options)
        {
            if (!options.HasIntervalPattern)
            {
                return;
            }

            for (int i = 0; i < labels.Count; i++)
            {
                var label = labels[i];
                label     = options.ReplaceStartIntervalIn(label, limits[i]);
                label     = options.ReplaceEndIntervalIn(label, limits[i + 1]);
                labels[i] = label;
            }
        }
コード例 #3
0
        public IReadOnlyList <string> GenerateLabels(IPopulationDataCollector populationDataCollector, PopulationAnalysisNumericField numericField, LabelGenerationOptions options, int numberOfLabels)
        {
            var groupingDefinition = new NumberOfBinsGroupingDefinition(numericField.Name)
            {
                NumberOfBins  = numberOfLabels,
                NamingPattern = options.Pattern,
                Strategy      = options.Strategy
            };

            groupingDefinition.CreateLimits(populationDataCollector, numericField);
            return(GenerateLabels(populationDataCollector, numericField, groupingDefinition));
        }