/// <summary>
        /// Sets up the line chart series.
        /// </summary>
        protected override void SetupSeries()
        {
            // If no books return the default.
            if (BooksReadProvider == null)
            {
                base.SetupSeries();
                return;
            }

            // Set up the axis names and formatters.
            XAxisTitle = "Month of the year";
            YAxisTitle = "Pages Read";

            // get the books & pages read for each calendar year
            Dictionary <int, List <MonthOfYearTally> > bookListsByMonthOfYear =
                BookTotalsUtilities.GetBookListsByMonthOfYear(BooksReadProvider);

            // Set up the series for the overall and the trendline.
            Series = new SeriesCollection();
            List <ISeriesView> seriesViews = new List <ISeriesView>();

            MinY = 0;
            MaxY = 1;

            // Add a series for each year.
            List <Color> stdColors   = ColorUtilities.SetupStandardColourSet();
            int          colourIndex = 0;

            foreach (int year in bookListsByMonthOfYear.Keys.ToList().OrderBy(x => x))
            {
                // Get the totals for the months.
                List <double> pagesReadSeriesValues = new List <double>();
                List <double> months = new List <double>();
                double        total  = 0;
                for (int i = BookTotalsUtilities.FirstMonth; i <= BookTotalsUtilities.LastMonth; i++)
                {
                    // Get the tally for this month if set and add it to the total
                    MonthOfYearTally tally = bookListsByMonthOfYear[year].FirstOrDefault(x => x.MonthOfYear == i);
                    months.Add(i);
                    total += tally?.PagesReadThisMonth ?? 0;
                    pagesReadSeriesValues.Add(total);
                }

                // Create the series for the year.
                Color color = stdColors[colourIndex % stdColors.Count];
                seriesViews.Add(CreateLineSeries(year.ToString(), months, pagesReadSeriesValues, color, 0d));
                colourIndex++;

                // Update the Y-range.
                MinY = Math.Floor(Math.Min(pagesReadSeriesValues.Min(), MinY));
                MaxY = Math.Ceiling(Math.Max(pagesReadSeriesValues.Max(), MaxY));
            }

            Series.AddRange(seriesViews);
            SeriesCollection = Series;

            // Update the X-range.
            MinTick = BookTotalsUtilities.FirstMonth - 1;
            MaxTick = BookTotalsUtilities.LastMonth + 1;
        }
        /// <summary>
        /// Sets up the line chart series.
        /// </summary>
        protected override void SetupSeries()
        {
            // If no books return the default.
            if (BooksReadProvider == null)
            {
                base.SetupSeries();
                return;
            }

            // Set the categories.
            Categories = BookTotalsUtilities.MonthNames.Skip(1).Take(12).ToArray();

            // Set up the axis names and formatters.
            XAxisTitle = "Month of the year";
            YAxisTitle = "Books Read";

            // get the books & pages read for each calendar year
            Dictionary <int, List <MonthOfYearTally> > bookListsByMonthOfYear =
                BookTotalsUtilities.GetBookListsByMonthOfYear(BooksReadProvider);

            // Set up the series collection and initialise the min and max.
            Series = new SeriesCollection();
            List <ISeriesView> seriesViews = new List <ISeriesView>();

            MinY = 0;
            MaxY = 1;

            // Add a series for each year.
            List <Color> stdColors   = ColorUtilities.SetupStandardColourSet();
            int          colourIndex = 0;

            foreach (int year in bookListsByMonthOfYear.Keys.ToList().OrderBy(x => x))
            {
                // Get the totals for the months.
                List <double> booksReadSeriesValues = new List <double>();
                for (int i = BookTotalsUtilities.FirstMonth; i <= BookTotalsUtilities.LastMonth; i++)
                {
                    // Get the tally for this month if set, otherwise set to zero
                    MonthOfYearTally tally = bookListsByMonthOfYear[year].FirstOrDefault(x => x.MonthOfYear == i);
                    booksReadSeriesValues.Add(tally?.BooksReadThisMonth ?? 0);
                }

                // Create the series for the year.
                Color color = stdColors[colourIndex % stdColors.Count];
                seriesViews.Add(CreateColumnSeries(year.ToString(), booksReadSeriesValues, color, 0d));
                colourIndex++;

                // Update the Y-range.
                MinY = Math.Floor(Math.Min(booksReadSeriesValues.Min(), MinY));
                MaxY = Math.Ceiling(Math.Max(booksReadSeriesValues.Max(), MaxY));
            }

            Series.AddRange(seriesViews);
            SeriesCollection = Series;
        }