Я создал два разных SVGs
. Один содержит график с точками данных, другой содержит три строки. Цвет линий должен зависеть от выбранной точки данных, и мне еще не удалось это сделать (подробнее см. Ниже). Jsfiddle можно найти здесь: jsfiddle.Как обновлять цвет элементов в SVG при наведении указателя мыши на второй SVG с помощью D3
Что я хотел бы сделать, это изменить цвет трех линий, когда я mouseover
данных точек. Мне удалось изменить цвет всех строк на один и тот же цвет, но на самом деле хотелось бы использовать цвет, связанный с соответствующей точкой данных, но я не знаю, как передать данные цвета, хранящиеся в myColors
, функции где я устанавливаю цвет линий.
Соответствующий код приведен ниже. Я добавляю график с точками datapoints к mySvg
, и когда I mouseover
точек данных, я меняю их цвет на черный, а цвет линий в другом SVG
- зеленый. Однако вместо того, чтобы менять цвет всех линий на зеленый, мне бы хотелось изменить их цвета на цвета, определенные в myColors
(см. Приведенный выше связанный jsfiddle, чтобы найти данные). Как я могу это сделать?
var circles = mySvg.selectAll("circle")
.data(lineData)
.enter()
.append("circle");
var circleAttributes = circles
.attr("cx", function (d) { return xScale(d.x); })
.attr("cy", function (d) { return yScale(d.y); })
.attr("r", 6)
.style("fill", 'red')
.on('mouseover', function(d){
d3.select(this).style("fill", 'black');
d3.select('#myLines').selectAll("line").attr("class","sweepline").style("stroke", 'green');
})
.on('mouseout', function(d){
d3.select(this).style("fill", 'red');
});
Я получил ваше сообщение ;-) На этот раз я не уверен, если я понимаю ваш вопрос. Возможно, это потому, что я не могу обойти то, что вы пытаетесь достичь с помощью своего кода. Мне все еще не хватает большой картины.Во всяком случае, я обновил ваш [JSFiddle] (http://jsfiddle.net/9g8hm3uf/6/) тем, что, на мой взгляд, является решением вашей проблемы. Если это решит ваши проблемы, я собираюсь привести его в ответ с некоторыми дополнительными объяснениями. – altocumulus
@altocumulus: Вы спасатель жизни! :) Это именно то, что я искал и которое я не смог решить! Да, пожалуйста, разместите его как ответ с дополнительными комментариями, и я собираюсь принять его (и повысить). Критической линией кажется «return d [5] [i] .color; поэтому, пожалуйста, уточните это. Предоставление «большой картины» сложно, но это был лучший минимальный пример, который я мог бы придумать, и это может показаться мне не слишком разумным, я должен признать. Так что спасибо за ваши усилия! Я могу прокомментировать ваш ответ только завтра, поэтому не удивляйтесь, если я не буду отвечать на это в ближайшее время. – Cleb