D3JS符号样式转换

时间:2015-12-17 05:01:11

标签: d3.js

我正在使用d3js中的符号创建折线图。我需要了解如何获取应用的符号类型,以便根据输入更改样式属性。目前,当我改变符号的颜色时,它们会从图表区域消失。目前我从数组中获取符号,但是我想根据应用在图表上的符号来检索它们,因为用户可以更改图表上的符号类型,因此当前从数组中检索将不起作用。我正在添加其他代码来显示符号的创建。我遵循以下示例http://bl.ocks.org/mbostock/3884955

我正在添加代码,我根据用户输入更改符号。它具有用于更改颜色的相同过滤器,但是如果我在更改符号之前更改了颜色,则此过滤器可以完美地显示符号以及颜色变化。

var color = function(i) {
    var colors2 = ["#CA0000", "#A2005C",
                  "#7EBD00", "#007979"];
    return colors2[i % colors2.length]
    };


var symbol = function(i) {
    var symbols = ["circle", "diamond", "square",
                   "triangle-up", "triangle-down", "cross"];
    return d3.svg.symbol()
             .size(81)
             .type(symbols[i % symbols.length]);
};

cities.forEach(function(dataset, i) {



    svg.selectAll(".point" )
    .data(dataset.values)
  .enter().append("path")
    .attr('id','symbolTrack2'+i)
    .attr("class", "point" + i)
    .attr("fill", color(i))
    .attr("stroke", "transparent")
    .attr("d", symbol(i).size(100))
    .attr("transform", function(d) {
      return "translate(" + x(d.date) +
                          "," + y(d.temperature) + ")";
    });
}

$scope.changeSymbolcolor =function(d) {
         var newHeight = $scope.config.symbolColor;
         d3.selectAll("path")
          .filter(function(d,i) { 
              var check;
              if(this.id == selectedIdForChange) {
                  check = true; 
                 } else {
                  check = false;
                 }

              return check; })
          .transition().attr("d", function(d,i){return symbol(i)}).attr('fill',newHeight);
         };



$scope.chartSymbolChange=function() {
         var newSymbol = $scope.config.chartSymbol;
         d3.selectAll("path")
          .filter(function(d,i) { 
              var check;
              if(this.id == selectedIdForChange) {
                  check = true; 
                 } else {
                  check = false;
                 }

              return check; })
          .transition().delay(0).duration(1000).attr("d", d3.svg.symbol().type(newSymbol));
         };

0 个答案:

没有答案