2014-02-23 263 views
1

這裏D3選擇指數是從標籤繪圖功能爲什麼我不工作

var legend = d3.select("." + to_chart) 
    .append("g") 
    .selectAll("g") 
     .data(data) 
      .enter().append("rect") 
      .attr("width", 20) 
      .attr("height", 20) 
      .attr("x", 20) 
      .attr("y", 20) 
      .attr("transform", function(d, i){return "translate(0," + i * 30 + ")";}) 
      .attr("style", "stroke: #000; stroke-width: 1px") 
      .attr("fill", function(d, i) { return color(i); }); 
var legend = d3.select("." + to_chart) 
    .append("g") 
    .attr("class", "t") 
    .selectAll(".t") 
     .data(data) 
      .enter().append("text") 
        .attr("x", function(data, i){return i;}) 
        .attr("y", 20) 
        .text(function(i){if (i = 0){ 
         return "eff"; 
        } else if (i = 1) { 
         return "non-eff"; 
        } 
        ;}); 

爲什麼.attr( 「X」 功能(數據,I){回報我;})代碼片段工作,但 .text部分不是?它總是得到'1'值。

+0

您需要的價值和指標參數傳遞給函數:'函數(d,I).. .'。第一個參數是值,第二個參數是索引...如果只傳遞一個參數,則無論您將其稱爲d還是i,該值都是返回的值。 – FernOfTheAndes

+0

好吧,我早期通過它,但在函數中我總是等於1,但我期望0和1 – Clyde

+0

當然,它在匹配迭代時返回0和1。這是非常奇怪的,它的兩個字符串不起作用。 – Clyde

回答

1

好吧,我把一個例子下來......除了我和function(d,i){...}提到的問題,你的比較操作錯了......你想用=====,而不是=。因此,這裏的交易:

var data = ["mary","goes"] 

var legend = d3.select("body").append("svg").append("g") 
    .attr("class", "t") 
    .selectAll(".t") 
    .data(data) 
    .enter() 
    .append("text") 
    .attr("x", function(d, i){return i * 30;}) 
    .attr("y", 20) 
    .text(function(d,i){ 
     if (i === 0){ 
      return "eff"; 
     } else if (i === 1) { 
      return "non-eff"; 
     } 
    ;}); 

這導致:

EFF非EFF

+0

非常感謝你!你從未感謝:) – Clyde

+0

謝謝:)這重新執行一個良好的紀律......我應該把它作爲一個儘可能完整的例子來表達任何意外。 – FernOfTheAndes

+0

我是從試圖回答問題的人的角度來談論的。 – FernOfTheAndes