Javascript 如何根据条件更改折线图中数据点的颜色?

Javascript 如何根据条件更改折线图中数据点的颜色?,javascript,jquery,d3.js,charts,Javascript,Jquery,D3.js,Charts,我使用D3.js设计了一个折线图。这条线只在x轴上走。它包含数据点,当鼠标在该数据点上移动时,只会显示一个工具提示,其中包含有关该数据点的某些特定数据。我需要逐个附加数据点,表示第一个数据点出现,下一个数据点在1分钟后出现,依此类推。所以我在一个时间段内将数据点添加到行中。这意味着我在这个函数中设置了一个setInterval函数和一个逐个追加的数据点。(为此,我逐步增加了保存数据的数组,每次数据点被覆盖时,它都会在时间间隔内显示为new data point append。) 然后我需要更改特

我使用D3.js设计了一个折线图。这条线只在x轴上走。它包含数据点,当鼠标在该数据点上移动时,只会显示一个工具提示,其中包含有关该数据点的某些特定数据。我需要逐个附加数据点,表示第一个数据点出现,下一个数据点在1分钟后出现,依此类推。所以我在一个时间段内将数据点添加到行中。这意味着我在这个函数中设置了一个setInterval函数和一个逐个追加的数据点。(为此,我逐步增加了保存数据的数组,每次数据点被覆盖时,它都会在时间间隔内显示为new data point append。)

然后我需要更改特定数据点的颜色。根据这个例子,如果一个特定的数据元素的“记录”值是“a”,那么我需要改变它的数据点的颜色。但根据覆盖或任何其他错误,它不能正常工作。有人能告诉我哪里错了吗?有没有可能比这更容易完成这项任务

(我尽力解释这一点。有时你可能不理解我说的话。因此,也许这段代码可以帮助你正确理解它)


MYD3L1
.轴线路径,
.轴线{
填充:无;
笔画:蓝色;
笔画宽度:2px;
}
.线路{
填充:无;
笔画:黑色;
笔画宽度:1px;
}
.勾选文本{
字体大小:粗体11px;
}
.勾线{
不透明度:0.2;
}  
变量行xAxisGroup=null,
行_dataCirclesGroup=null,
line_dataLinesGroup=null;
var line_MaxDataPoints Fordots=50,
线路转换持续时间=1000;
var line_pointRadius=7;
var line_parseDate=d3.time.format(“%Y-%m-%d%H:%m:%S”).parse;
//在此处设置原始数据集
var OriginalDataForLineChart=[{
“日期”:“2013-03-1205:09:04”,
“记录”:“A”,
“值”:“0”
}, {
“日期”:“2013-03-12 14:59:06”,
“记录”:“B”,
“值”:“0”
}, {
“日期”:“2013-03-12 14:49:04”,
“记录”:“C”,
“值”:“0”
}, {
“日期”:“2013-03-13 14:39:06”,
“记录”:“D”,
“值”:“0”
},{
“日期”:“2013-03-12 14:29:03”,
“记录”:“A”,
“值”:“0”
}];
var line_margin={顶部:20,右侧:20,底部:30,左侧:50};
var line_width=1100-line_margin.left-line_margin.right;
var line_height=100-line_margin.top-line_margin.bottom;
var line_x=d3.time.scale()
.范围([0,线宽]);
var line_y=d3.scale.linear()
.范围([line_height,0]);
var line_xAxis=d3.svg.axis()
.刻度(第x行)
.东方(“底部”);
var line_yAxis=d3.svg.axis()
.刻度(y线)
.东方(“左”);
var line_line=d3.svg.line()
.x(函数(d){returnline_x(d.Date);})
.y(函数(d){returnline_y(d.Value);});
变量行_svg=d3。选择(“.chart3”)。追加(“svg”)
.attr(“宽度”,线条宽度+线条边距。左+线条边距。右)
.attr(“高度”,行高+行边距。顶部+行边距。底部)
.附加(“g”)
.attr(“变换”、“平移”(+line\u margin.left+)、“+line\u margin.top+”);
原始数据FORLINECHART.forEach(函数(d){
d、 日期=行日期(d.Date);
d、 值=+d.值;
});
line_x.domain(d3.extent(OriginalDataForLineChart,函数(d){returnd.Date;}));
line_y.domain(d3.区段(OriginalDataForLineChart,函数(d){返回d.值;}));
行_svg.append(“g”)
.attr(“类”、“x轴”)
.attr(“变换”、“平移(0“+线条高度+”))
.呼叫(线路_xAxis);
行_svg.append(“路径”)
.基准(原始数据用于线形图)
.attr(“类”、“行”)
.attr(“d”,第四行);
var i=1;
var interval=setInterval(函数(){
更新技术部分(一);
i++;
如果(i==OriginalDataForLineChart.length)clearInterval(interval);
},1000);
var duplicateDataForLineChart=[];
函数updateLineChart(索引){

对于(var counut2=0;counut2我删除了for循环,因为它不需要。 我们可以添加一个回调函数来检查“a”类型的记录,并在“fill”属性满足条件时将其设置为红色


MYD3L1
.轴线路径,
.轴线{
填充:无;
笔画:蓝色;
笔画宽度:2px;
}
.线路{
填充:无;
笔画:黑色;
笔画宽度:1px;
}
.勾选文本{
字体大小:粗体11px;
}
.勾线{
不透明度:0.2;
}  
变量行xAxisGroup=null,
行_dataCirclesGroup=null,
line_dataLinesGroup=null;
var line_MaxDataPoints Fordots=50,
线路转换持续时间=1000;
var line_pointRadius=7;
var line_parseDate=d3.time.format(“%Y-%m-%d%H:%m:%S”).parse;
//在此处设置原始数据集
var OriginalDataForLineChart=[{
“日期”:“2013-03-1205:09:04”,
“记录”:“A”,
“值”:“0”
}, {
“日期”:“2013-03-12 14:59:06”,
“记录”:“B”,
“值”:“0”
}, {
“日期”:“2013-03-12 14:49:04”,
“记录”:“C”,
“值”:“0”
}, {
“日期”:“2013-03-13 14:39:06”,
“记录”:“D”,
“值”:“0”
},{
“日期”:“2013-03-12 14:29:03”,
“记录”:“A”,
“值”:“0”
}];
var line_margin={顶部:20,右侧:20,底部:30,左侧:50};
var line_width=1100-line_margin.left-line_margin.right;
var line_height=100-line_margin.top-line_margin.bottom;
林华
var canvas = document.getElementById('updating-chart'),
ctx = canvas.getContext('2d'),
startingData = {
  labels: [1, 2, 3, 4, 5, 6, 7],
  datasets: [
      {
          fillColor: "rgba(220,220,220,0.2)",
          strokeColor: "rgba(220,220,220,1)",
          pointColor: [],
          pointStrokeColor: "#fff",
          pointBackgroundColor : [],
          pointRadius: 20,
          data: [65, 59, 80, 81, 56, 55, 40]
      },

  ]
};

// Reduce the animation steps for demo clarity.
var myLiveChart = new Chart(ctx,{
type: 'line',
data: startingData
});


setInterval(function(){


// Update one of the points in the first dataset
//index [2] correspond to the myLiveChart.data.datasets[0].data[2] from  my data
myLiveChart.data.datasets[0].pointBackgroundColor[2]= "rgb(0,0,0)"

myLiveChart.update();
}, 500);