internal GroupedExposuresHistogram(IHistogramSource histogramSource, double lowBinValue, double binWidth, int binCount, int groupLevel)
     : base(histogramSource, lowBinValue, binWidth, binCount, groupLevel)
 {
     GroupedBarSeriesViewModels = new GroupedBarSeriesViewModel[2];
     GroupedBarSeriesViewModels[0] = new GroupedBarSeriesViewModel();
     GroupedBarSeriesViewModels[1] = new GroupedBarSeriesViewModel();
     var bins = new HistogramBins(HistogramSource, LowBinValue, BinWidth, BinCount);
     BinNames = new string[bins.BinNames.Length];
     Array.Copy(bins.BinNames, BinNames, bins.BinNames.Length);
     //_cvs = new CollectionViewSource();
     //var speciesPlatformConverter = new GroupingConverter(a => _simulationLog.RecordFromActorID(((ActorExposureRecord)a).ActorID) is SpeciesNameGuid ? "Species" : "Platforms");
     //var actorNameConverter = new GroupingConverter(a => _simulationLog.RecordFromActorID(((ActorExposureRecord)a).ActorID).Name);
     //_cvs.GroupDescriptions.Add(new PropertyGroupDescription(null, speciesPlatformConverter));
     //_cvs.GroupDescriptions.Add(new PropertyGroupDescription(null, actorNameConverter));
     //_cvs.Source = simulationLog;
 }
 void CreateBottomRightSeries()
 {
     const double rangeStart = 1;
     const int rangeEnd = 10;
     const double rangeStep = 1;
     BottomRight.XAxis.AxisType = AxisType.Enumerated;
     BottomRight.YAxis.AxisType = AxisType.Logarithmic;
     BottomRight.XAxis.AxisTicks = new ObservableCollection<DataAxisTick>
     {
         new DataAxisTick(-1, null, false),
         new DataAxisTick(0, "Zero", false),
         new DataAxisTick(1, "One", false),
         new DataAxisTick(2, "Two", false),
         new DataAxisTick(3, "Three", false),
         new DataAxisTick(4, "Four", false),
         new DataAxisTick(5, "Five", false),
         new DataAxisTick(6, "Six", false),
         new DataAxisTick(7, "Seven", false),
         new DataAxisTick(8, "Eight", false),
         new DataAxisTick(9, "Nine", false),
         new DataAxisTick(10, "Ten", false),
         new DataAxisTick(11, null, false),
     };
     BottomRight.YAxis.DataRange.Update(0.1, 10);
     BottomRight.XAxis.DataRange.Update(-1, 11);
     var redSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x / 2.0)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = x / 2",
         Fill = Brushes.Red,
     };
     var greenSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = x",
         Fill = Brushes.Green,
     };
     var blueSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x * 1.5)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = 1.5x",
         Fill = Brushes.Blue,
     };
     var cyanSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x * 2)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = 2x",
         Fill = Brushes.Cyan,
     };
     var magentaSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x * 2.5)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = 2.5x",
         Fill = Brushes.Magenta,
     };
     var orangeSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x * 3)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = 3x",
         Fill = Brushes.Orange,
     };
     var blackSeries = new BarSeriesViewModel
     {
         SeriesData = Range(rangeStart, rangeEnd, rangeStep).Select(x => Tuple.Create(x, x * 3.5)).ToObservableList(),
         ItemToPoint = i => new Point(((Tuple<double, double>)i).Item1, ((Tuple<double, double>)i).Item2),
         StrokeThickness = 1,
         SeriesName = "y = 3.5x",
         Fill = Brushes.Black,
     };
     var groupedSeries = new GroupedBarSeriesViewModel();
     groupedSeries.BarSeriesCollection.Add(redSeries);
     groupedSeries.BarSeriesCollection.Add(greenSeries);
     groupedSeries.BarSeriesCollection.Add(blueSeries);
     groupedSeries.BarSeriesCollection.Add(cyanSeries);
     groupedSeries.BarSeriesCollection.Add(magentaSeries);
     groupedSeries.BarSeriesCollection.Add(orangeSeries);
     groupedSeries.BarSeriesCollection.Add(blackSeries);
     BottomRight.DataSeriesCollection.Add(groupedSeries);
     //BottomRight.DataSeriesCollection.Add(redSeries);
     //BottomRight.DataSeriesCollection.Add(blueSeries);
     //BottomRight.YAxis.VisibleRange.Add(0, 10);
     BottomRight.XAxisTicks = null;
 }