Я могу предложить решение на основе понимания формата SVG. Вот пример: https://apex.oracle.com/pls/apex/f?p=34599:4 Он содержит диаграмму с барами и кнопкой (To Red
). Действие кнопки - это динамическое действие, которое выполняет javascript-код. Если вы нажмете кнопку, один из баров изменит свой цвет.
Как это работает. Графики SVG работают так же, как HTML и CSS. Тег defs
внутри тега svg
содержит список стилей, тегов g
, path
, rect
и многие другие содержат графики, которые могут использовать стили из списка defs
. Вам необходимо изменить предопределенные списки и графические элементы defs
.
Вот код. Я не хороший программист javascript, и, как вы можете видеть, все значимые значения здесь жестко закодированы. Но я надеюсь, что вся идея ясна:
// here we get defs list. Be careful if you have several charts on the page:
var defs = document.getElementsByTagName("defs")[0];
// here we get one of color styles:
var grad1 = document.getElementById("#ac_linearGradient_75");
// make a copy of the style:
var grad2 = grad1.cloneNode(true);
// and change its ID:
grad2.id = grad2.id + "_copy";
// then define new color:
grad2.firstChild.setAttribute("style", "stop-color:rgb(209, 29, 29);stop-opacity:0.9");
// append to the defs list:
defs.appendChild(grad2);
// get one of bars by ID:
var bar1 = document.getElementById("#ac_path_8o");
// set new filling style:
bar1.setAttribute("fill", "url(##ac_linearGradient_75_copy)");
В свойствах динамического действия в можно установить свойство Fire on page load
- код будет работать автоматически после загрузки страницы. Также в коде javascript вы можете получать значения из элементов, помещать их в диаграмму и т. Д.
Спасибо, что ответите, я просмотрю его. Наверное, вы можете добавить этот способ к ярлыкам и к диаграмме. – Alexsen
@Alexsen Я до сих пор не знаю, как AnyChart добавляет текст в диаграмму. Но вы можете добавить текст, используя тег 'text'. См. Больше здесь: http://www.w3schools.com/graphics/svg_text.asp – Dmitry
Ну, я не могу получить любой бар из html-документа, потому что единственный тег, который у них есть, - это класс, и у него есть пробел в имени, поэтому я не могу получить элемент. Это была хорошая идея, это не сработало для меня, но это может сработать для других. – Alexsen