Но данных много и я подумал - может стоит их кешировать на стороне сервера? А потом из кеша брать данные и на стороне клиента отрисовывать график?
Само-собой напрашивается использование Key/Value хранилищ наподобие Memcached/TaranTool/Redis.
При построении графика данные для графика сначала ищутся по некоторому ключу, допустим, "reports/report1000". Если такого ключа нет, то данные запрашиваются со стороннего сервиса и кладутся по тому ключу.
Желательно класть данные в кеш со сроком истечения, по истечению которого k/v хранилище само очищает от неактуальных данных.
Хранить данные от стороннего сервиса в кеше можно как есть (сериализованные в строку, конечно), а можно и предобработанные. Хранить можно просто как неструктурированные данные, так и в форматах JSON, XML и других.
Один нюанс: данные должны быть небольшие по размеру, иначе k/v хранилище будет кушать много памяти, поскольку все данные находятся в RAM.