Im используя цветовую гамму:Цветовая гамма не работает должным образом в D3/JavaScript
var color = d3.scale.category10();
Im, используя это, чтобы цвет края раскладкой силы графа в соответствии с их значением
var links = inner.selectAll("line.link")
.style("stroke", function(d) { return color(d.label); });
Теперь я нужна «легенда», чтобы показать пользователю, что означает каждый цвет:
edgesArray = [];
edgesArrayIndex = [];
for (i=0;i<data.edges.length;i++) {
if(!edgesArray[data.edges[i].name])
{
edgesArray[data.edges[i].name]=1;
edgesArrayIndex.push(data.edges[i].name);
}
}
var colourWidth = 160;
var colourHeight = 25;
for(i=0; i<edgesArrayIndex.length; i++){
if (edgeColour == true){
svg.append('rect')
.attr("width", colourWidth)
.attr("height", colourHeight)
.attr("x", Marg*2)
.attr("y", Marg*2 + [i]*colourHeight)
.style("fill", color(i))
;
svg.append("text")
.attr("x", Marg*3)
.attr("y", Marg*2 + [i]*colourHeight + colourHeight/2)
.attr("dy", ".35em")
.text(color(i) + " : " + data.edges[i].name);
}
//console.log(edgesArrayIndex);
}
Теперь все работает нормально. Но цвета все не так. Голые со мной здесь. Когда я прикрепляю цвета к графику, первые 6 цветов присоединяются к краям, так как существует 6 различных типов ребер.
Но когда я применяю цветовую гамму к 6 'rects', я добавляю к SVG его, как если бы первые 6 цветов массива цветовой гаммы были израсходованы при применении к краям, и когда я делаю цикл for начиная с цвета (0), он на самом деле дает мне цвет в цвете (5) (как только 0).
Например, ive получил красный, синий, зеленый, белый, черный, розовый, оранжевый, желтый, индиго, аква. Мои края - красный, синий, зеленый, белый, черный, розовый , и теперь, когда я хочу применить масштаб к прямоугольникам, которые я сделал, я ожидал бы, что прямоугольники имеют одинаковые значения - красный, синий, зеленый, белый , черный, розовый.
Но они на самом деле имеют: оранжевый, желтый, индиго, аква, красный, синий.
Они начинаются с цвета [5] и, как если бы они обертываются к началу и возвращаются к красным, синим и так далее.
Извините, если это не имеет смысла, я попытался изо всех сил описать, что происходит. Вероятно, я кое-что допустил ошибку, или я не понимаю правильные значения в D3.
В любом случае, есть ли у кого есть идеи?
Благодарим Вас просматривал мой длинный вопрос и код, но это была опечатка с моей стороны. Я отредактировал код перед тем, как поместить его здесь, так как я не могу показать свой код, поэтому я боюсь, что это не проблема :(:(Не могли бы вы подумать о чем-нибудь, что может быть неправильным? @Lars Kotthoff – rekoDolph
не обращайте внимания на этот вопрос - http://stackoverflow.com/questions/20590396/d3-scale-category10-not-behaving-as-expected – rekoDolph