2014-04-22 55 views
0

我有一個函數,可以根據正數或負數查找向上或向下的三角形。附加一個名稱與D3有條件地設置的元素

  var pointer = column 
      .append("polygon") 
      .attr("points", function (d, i) { 
       if (d.difference > 0) 
        return "0,0 -10,0 -5,-8"; 
       else if ((d.difference < 0)) { 
        return "0,0 10,0 5,8"; 
       } 
      }) 

對於小於或大於零的數字,它工作得很好。現在我想添加一個圓圈,如果它是零。

我想知道在這種情況下是否可以將「多邊形」更改爲「圓形」作爲一種元素?否則,我如何以不同的方式執行此操作?

回答

0

您可以將一個函數傳遞給.append(),而不是名稱,該函數返回要附加的DOM元素。所以你可以有一個函數返回一個polygon在一個案件和一個circle在另一個。

該方法的問題在於,您需要根據附加的元素類型設置不同的屬性。因此,您需要在返回DOM元素的函數中設置這些屬性,這當然可能,但不是D3。這也會使D3的幫助函數更難一些,這對你來說可能是或者可能不是問題。

替代方法是始終附加path並適當設置d屬性,可能使用自定義路徑生成器。這將允許您使用一致的代碼。