anchor.diff:      double maxYLines = (largestPlayCount / horizontalLineStep).ceilToDouble() *
           horizontalLineStep;
   
  +    // Extract SeriesData items from graph data and place into a list for easier
  +    // indexing and access
  +    final tvSeriesData = playsByDate.seriesDataList.firstWhere(
  +      (seriesData) => seriesData.seriesType == SeriesType.tv,
  +      orElse: () {
  +        return null;
  +      },
  +    );
  +    final moviesSeriesData = playsByDate.seriesDataList.firstWhere(
  +      (seriesData) => seriesData.seriesType == SeriesType.movies,
  +      orElse: () {
  +        return null;
  +      },
  +    );
  +    final musicSeriesData = playsByDate.seriesDataList.firstWhere(
  +      (seriesData) => seriesData.seriesType == SeriesType.music,
  +      orElse: () {
  +        return null;
  +      },
  +    );
  +    final liveSeriesData = playsByDate.seriesDataList.firstWhere(
  +      (seriesData) => seriesData.seriesType == SeriesType.live,
  +      orElse: () {
  +        return null;
  +      },
  +    );
  +
  +    List<SeriesData> seriesDataLists = [
  +      tvSeriesData,
  +      moviesSeriesData,
  +      musicSeriesData,
  +      liveSeriesData,
  +    ];
  +
  +    // Create list of non null series data for use in the tooltip loop
  +    List<SeriesData> notNullSeriesDataLists = List.from(
  +      seriesDataLists.where((list) => list != null),
  +    );
  +
  +    // Create spot data lists for mapping out the graph
       List<FlSpot> tvData = [];
       List<FlSpot> moviesData = [];
       List<FlSpot> musicData = [];
  +    List<FlSpot> liveData = [];
  +
  +    // Put spot data lists in a list for easier indexing in a loop
  +    List spotList = [tvData, moviesData, musicData, liveData];
  +
       for (var i = 0; i < playsByDate.categories.length; i++) {
  -      tvData.add(
  -        FlSpot(
  -          i.toDouble(),
  -          playsByDate.seriesDataList[0].seriesData[i].toDouble(),
  -        ),
  -      );
  -      moviesData.add(
  -        FlSpot(
  -          i.toDouble(),
  -          playsByDate.seriesDataList[1].seriesData[i].toDouble(),
  -        ),
  -      );
  -      musicData.add(
  -        FlSpot(
  -          i.toDouble(),
  -          playsByDate.seriesDataList[2].seriesData[i].toDouble(),
  -        ),
  -      );
  +      for (var j = 0; j < seriesDataLists.length; j++) {
  +        if (seriesDataLists[j] != null) {
  +          spotList[j].add(
  +            FlSpot(
  +              i.toDouble(),
  +              seriesDataLists[j].seriesData[i].toDouble(),
  +            ),
  +          );
  +        }
  +      }
       }
   
       return Padding(
  
positive.code:                         },
                        ),
                        lineBarsData: [
                          LineChartBarData(
                            isCurved: true,
                            preventCurveOverShooting: true,
                            spots: tvData,
                            colors: [TautulliColorPalette.amber],
                            dotData: FlDotData(
                              show: false,
                            ),
                          ),
                          LineChartBarData(
                            isCurved: true,
                            preventCurveOverShooting: true,
                            spots: moviesData,
                            colors: [TautulliColorPalette.not_white],
                            dotData: FlDotData(
                              show: false,
                            ),
                          ),
                          LineChartBarData(
                            isCurved: true,
                            preventCurveOverShooting: true,
                            spots: musicData,
                            colors: [PlexColorPalette.cinnabar],
                            dotData: FlDotData(
                              show: false,
                            ),
                          ),
                        ],
                      ),
                    ),
  
negative.code:                 Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      if (tvSeriesData != null)
                        Row(
                          children: [
                            const FaIcon(
                              FontAwesomeIcons.solidCircle,
                              color: TautulliColorPalette.amber,
                              size: 12,
                            ),
                            const Padding(
                              padding: EdgeInsets.only(left: 4),
                              child: Text('TV'),
                            ),
                            if (moviesSeriesData != null ||
                                musicSeriesData != null ||
                                liveSeriesData != null)
                              const SizedBox(width: 8),
                          ],
                        ),
                      if (moviesSeriesData != null)
                        Row(
                          children: [
                            const FaIcon(
                              FontAwesomeIcons.solidCircle,
                              color: TautulliColorPalette.not_white,
                              size: 12,
                            ),
                            const Padding(
                              padding: EdgeInsets.only(left: 4),
                              child: Text('Movies'),
                            ),
                            if (musicSeriesData != null || liveSeriesData != null)
                              const SizedBox(width: 8),
                          ],
                        ),
                      if (musicSeriesData != null)
                        Row(
                          children: [
                            const FaIcon(
                              FontAwesomeIcons.solidCircle,
                              color: PlexColorPalette.cinnabar,
                              size: 12,
                            ),
                            const Padding(
                              padding: EdgeInsets.only(left: 4),
                              child: Text('Music'),
                            ),
                            if (liveSeriesData != null) const SizedBox(width: 8),
                          ],
                        ),
                      if (liveSeriesData != null)
                        Row(
                          children: const [
                            FaIcon(
                              FontAwesomeIcons.solidCircle,
                              color: PlexColorPalette.curious_blue,
                              size: 12,
                            ),
                            Padding(
                              padding: EdgeInsets.only(left: 4),
                              child: Text('Live TV'),
                            ),
                          ],
                        ),
                    ],
                  ),
                ],
  