Я просматриваю код, который я нашел онлайн для создания и воспроизведения с направленными графами в D3 (http://bl.ocks.org/cjrd/6863459). Я задал вопрос об этом вчера - Directed graph - node level CSS styles, и это дало мне общее представление о том, как добавлять стили CSS в объекты SVG. Тем не менее, я все еще не могу делать то, что хочу. Это связано с тем, что в JS-файле они, похоже, используют «узлы» для создания «кругов», а затем визуализируют их за один раз, а не зацикливая их. В функции updateGraph, у нас есть линии -Прокрутка кругов SVG в направленном графике
// add new nodes
var newGs= thisGraph.circles.enter()
.append("g");
newGs.classed(consts.circleGClass, true)
.attr("transform", function(d){return "translate(" + d.x + "," + d.y + ")";})
.on("mouseover", function(d){
if (state.shiftNodeDrag){
d3.select(this).classed(consts.connectClass, true);
}
})
.on("mouseout", function(d){
d3.select(this).classed(consts.connectClass, false);
})
.on("mousedown", function(d){
thisGraph.circleMouseDown.call(thisGraph, d3.select(this), d);
})
.on("mouseup", function(d){
thisGraph.circleMouseUp.call(thisGraph, d3.select(this), d);
})
.call(thisGraph.drag);
Прежде всего, я не уверен, что .append («г») означает, что здесь. Но более важно то, что линия, где применяется класс CSS,
newGs.classed(consts.circleGClass, true)
, кажется, относится класс для всех «кругов» в одной строке. Вместо этого я хочу прокрутить каждый узел и круг этого узла, применить стиль CSS, основанный на атрибутах узла (чтобы все было просто, можно сказать, что «название» начинается с определенного текста, я хочу сделайте его синим кружком). Я до сих пор не знаю, как это сделать. Может кто-нибудь помочь здесь? Опять же, ответы на мой предыдущий вопрос помогли в понимании CSS, но эта другая проблема все еще блокирует меня от того, что я хочу.
Awesome! Оно работает! Спасибо Кирилл ..просто еще две быстрые вопросы - (1) В вашем фрагменте кода для красно-синего цвета, кажется, есть закрытая скобка в самом конце, которая никогда не открывалась. Он по-прежнему работает, поэтому мне любопытно, чего мне не хватает. (2) Теперь я вижу, как окрашивать узлы на основе условий на данные. Но, похоже, это избавляет от изменений цвета в событиях мыши. Что бы синтаксис был, если вместо «красного», я хотел бы назначить класс CSS? –
Хорошо, проигнорируйте первый вопрос. Я вижу, где он был открыт сейчас - извините. Это уже решило мою проблему, но если бы вы могли сказать мне, как добавлять классы CSS вместо «красного», «синего», это будет все, что мне нужно. –