Acredito que essa reponsabilidade de reendenizar o gráfico deve ser totalmente do client (Front-end), o Back-end somente recebe a requisição como por exemplo um http://api/v1.0/generate-graph
e retorna a lista de dados que deve ser reendenizada no gráfico.
Exemplo:
[
{ "nome": "Categoria A", "valor": 25 },
{ "nome": "Categoria B", "valor": 40 },
{ "nome": "Categoria C", "valor": 15 },
{ "nome": "Categoria D", "valor": 30 }
]
Pelo menos eu faria isso, afim de não sobrecarregar a api com tarefas que claramente podem se executadas pelo front-end.