Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Chart.js-通过单击饼图段向折线图添加数据_Javascript_Charts_Chart.js - Fatal编程技术网

Javascript Chart.js-通过单击饼图段向折线图添加数据

Javascript Chart.js-通过单击饼图段向折线图添加数据,javascript,charts,chart.js,Javascript,Charts,Chart.js,我设置了两个图表-一个是带有onClick操作的饼图,另一个是空折线图。我目前正在使用随机数据填充图表。我要做的是通过点击饼图部分为折线图生成随机数据。我还尝试将饼图段的标签传递给折线图,以便生成的数据与单击的数据具有相同的标签。以下是我目前的代码: //Pie Chart var ctx = document.getElementById("trackingPie2").getContext("2d"); var selectedIndex = null; window.trackingPie

我设置了两个图表-一个是带有onClick操作的饼图,另一个是空折线图。我目前正在使用随机数据填充图表。我要做的是通过点击饼图部分为折线图生成随机数据。我还尝试将饼图段的标签传递给折线图,以便生成的数据与单击的数据具有相同的标签。以下是我目前的代码:

//Pie Chart
var ctx = document.getElementById("trackingPie2").getContext("2d");
var selectedIndex = null;
window.trackingPie2 = new Chart(ctx, {
  type: "doughnut",
  data: pieChartData2,
  options: {
    responsive:false,
    maintainAspectRatio: false,
    title: {
        display: true,
        text: ["Dataset1"]
    },
    legend: {
        position: 'bottom'
    },
    onClick: function (evt, elements) {
        if (elements && elements.length) {
            var segment = elements[0];
            trackingPie2.update();
            if (selectedIndex !== segment["_index"]) {
                selectedIndex = segment["_index"];
                segment._model.outerRadius += 10;
            }
            else {
                selectedIndex = null;
            }
        }
    },
    layout: {
        padding: 0
    }
  }
});

//Line Chart
var config = {
type: "line",
data: {
    labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August'],        
},
options: {
  responsive:true,
  maintainAspectRatio: true,
  title: {
    display: true,
    text: 'Dataset 2'
  },
  legend: {
    position: 'bottom'
  }
}
};
var ctx = document.getElementById("linePieChart").getContext("2d");
window.linePieChart1 = new Chart(ctx, config);
var colorNames = Object.keys(window.chartColors);
document.getElementById('trackingPie2').onClick = function(evt) {
  var activePoints = trackingPie2.getSegmentsAtEvent(evt);
  if(Object.keys(activePoints).length > 0) {
    var label = activePoints[0]['label'];
  }
  var colorName = colorNames[config.data.datasets.length % colorNames.length];
  var newColor = window.chartColors[colorName];
  var newDataset = {
    label: label,
    backgroundColor: newColor,
    borderColor: newColor,
    data: [],
    fill: false
  };

  for (var index = 0; index < config.data.labels.length; ++index) {
    newDataset.data.push(randomScalingFactor());
  }

  config.data.datasets.push(newDataset);
  window.linePieChart1.update();
};
//饼图
var ctx=document.getElementById(“trackingPie2”).getContext(“2d”);
var selectedIndex=null;
window.trackingPie2=新图表(ctx{
类型:“甜甜圈”,
数据:pieChartData2,
选项:{
回答:错,
MaintaintAspectRatio:false,
标题:{
显示:对,
文本:[“数据集1”]
},
图例:{
位置:'底部'
},
onClick:函数(evt、元素){
if(elements&&elements.length){
var段=元素[0];
trackingPie2.update();
if(selectedIndex!==段[“\u index”]){
selectedIndex=段[“_index”];
段._模型外表面+=10;
}
否则{
selectedIndex=null;
}
}
},
布局:{
填充:0
}
}
});
//折线图
变量配置={
键入:“行”,
数据:{
标签:[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”],
},
选项:{
回答:是的,
维护Aspectratio:是的,
标题:{
显示:对,
文本:“数据集2”
},
图例:{
位置:'底部'
}
}
};
var ctx=document.getElementById(“linePieChart”).getContext(“2d”);
window.linePieChart1=新图表(ctx,配置);
var colorNames=Object.keys(window.chartColors);
document.getElementById('trackingPie2')。onClick=function(evt){
var activePoints=trackingPie2.getSegmentsAtEvent(evt);
if(Object.keys(activePoints.length>0){
var label=activePoints[0]['label'];
}
var colorName=colorNames[config.data.datasets.length%colorNames.length];
var newColor=window.chartColors[colorName];
var newDataset={
标签:标签,
背景颜色:newColor,
borderColor:newColor,
数据:[],
填充:假
};
对于(变量索引=0;索引
我点击饼图,什么也没发生,但我没有得到任何控制台错误。我似乎看不出问题在哪里


非常感谢您的帮助。

我通过在饼图的单击功能中使用以下代码自行解决了此问题:

var activePoints = window.trackingPie2.getElementsAtEventForMode(evt, 'point', 
window.trackingPie1.options);
var firstPoint = activePoints[0];
var label = window.trackingPie2.data.labels[firstPoint._index];
我在饼图调用中添加了“窗口”,并使用“getElementsAtEventForMode”而不是“getElementAtEvent”来获取数据