Вместо того, чтобы создавать отдельные переменные под каждый набор данных, просто обходите массив series с помощью forEach. Надо ли перерисовывать график сразу, как только в какой-либо из наборов данных добавлена новая точка - не уверен. Лично я бы
дожидался получения новых данных по всем наборам и только потом делал перерисовку. Конечно, если хотите, перерисовывать можно и
при каждом получении новых данных.
Также следует обратить внимание на ваш выбор использовать setInterval для организации постоянного обновления - что если один из запросов займёт сильно больше времени, чем вы ожидаете? Не получится ли так, что более новые данные будут добавлены раньше старых? Возможно, стоит
делать так: запрос, по получении ответа - setTimeout на следующий запрос.
Что до
работает, но не всегда корректно <...> точно есть ошибки
- это разговор ни о чём. Информации примерно ноль. Вам следовало рассказать, как проявляется эта некорректность.