Как перерисовать линейный график RGraph SVG?

У меня есть простой веб-сервер, встроенный в микроконтроллер. Одна из веб-страниц позволяет пользователю отображать захваченные данные (в формате CSV). Страница сначала загружает все данные и представляет их пользователю, но затем я хочу разрешить пользователю делать такие вещи, как выбор и отмена выбора данных (столбцов), изменение цвета строк и изменение шкалы данных. Когда я наивно вызываю RGraph.SVG.Line второй раз, он просто перерисовывает измененную диаграмму поверх уже существующего изображения. Как мне заставить RGraph удалить предыдущее изображение и начать заново?

Я пробовал (отдельно) следующее:

RGraph.Clear(document.getElementById("plotDiv"));
RGraph.ObjectRegistry.Clear();
document.getElementById("plotDiv").innerHTML="";

Кажется, что "RGraph.Clear" и "Graph.ObjectRegistry.Clear" недоступны в версии библиотеки SVG. Когда я удаляю "innerHTML" div, div очищается, но тогда RGraph.SVG.Line вообще ничего не рисует при повторном вызове.

Есть еще что-нибудь, что я могу попробовать?


person Linda X    schedule 21.09.2019    source источник


Ответы (1)


Вы должны вызвать функцию очистки для SVG, а не для версии Canvas:

RGraph.SVG.clear(myChart.svg);

Чтобы очистить реестр (может также потребоваться это сделать):

RGraph.SVG.OR.objects = [];

После этого вы сможете нарисовать новую диаграмму в теге SVG.

person Richard    schedule 21.09.2019
comment
Спасибо, Ричард. RGraph.SVG.clear, похоже, помогает. Мне удалось отследить только документацию по Canvas API. Теперь я лучше понимаю, что искать. - person Linda X; 22.09.2019
comment
Я не писал никакой документации по SVG API, но просмотрите файл RGraph.svg.common.core.js, чтобы понять, какие функции доступны. - person Richard; 22.09.2019