在chart.js中的一条线上绘制点

时间:2017-03-10 06:03:53

标签: javascript jquery charts chart.js chart.js2

我使用chart.js绘制简单折线图。我想在我的行中显示红点。例如,我已经将数组作为数字从1到100的数据集传递。我想向红色显示偶数的点。这可能在chart.js。

据我所知,我可以浏览该数组并从该数组中取出偶数值,然后将该数组传递给数据集。你能在这方面提供帮助吗?这是我的数据集代码

这是我的数据集

datasets: [
        {
            label: 'Assay Values',
            fill: false,
            lineTension: 0,
            backgroundColor: "rgba(75,192,192,0.4)",
            borderColor: "rgba(75,192,192,1)",
            borderCapStyle: 'butt',
            borderDash: [],
            borderDashOffset: 0.0,
            borderWidth: 1,
            borderJoinStyle: 'miter',
            pointBorderColor: "rgba(75,192,192,1)",
            pointBackgroundColor: "#fff",
            pointBorderWidth: 1,
            pointHoverRadius: 5,
            pointHoverBackgroundColor: "rgba(75,192,192,1)",
            pointHoverBorderColor: "rgba(220,220,220,1)",
            pointHoverBorderWidth: 2,
            pointRadius: 1,
            pointHitRadius: 10,
            data: data.assay_value,
            spanGaps: false
        },

data.assay_values是包含数组的数组。

任何形式的帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

假设data.assay_values包含一个数字数组(例如[65, 59, 80, 81, 56, 55, 40]),并且您只希望图表显示偶数值,则可以使用以下代码将数据数组处理为新阵列,只保留偶数。

请记住,您还必须构建新的labels数组,因为数据集数据数组的长度必须与图表标签的长度相同(因为数据中的每个索引都映射到相应的标签索引)。

请注意,由于您未在问题中提供有关labels数组的任何详细信息,因此此代码假定您有一个名为labels的数组,其中包含一个字符串数组。您需要根据在实施中定义标签的方式进行更改。

var evenData = [];
var newLabels = [];

data.assay_values.forEach(function(e, i) {
  // only take the even values
  if (e % 2 === 0) {
    evenData.push(e);
    newLabels.push(labels[i]);
  }
});

然后更改chart.js图表​​配置以使用这样的新标签和数据数组。

var data = {
  labels: newLabels,
  datasets: [{
    label: 'Assay Values',
    fill: false,
    lineTension: 0,
    backgroundColor: "rgba(75,192,192,0.4)",
    borderColor: "rgba(75,192,192,1)",
    borderCapStyle: 'butt',
    borderDash: [],
    borderDashOffset: 0.0,
    borderWidth: 1,
    borderJoinStyle: 'miter',
    pointBorderColor: "rgba(75,192,192,1)",
    pointBackgroundColor: "#fff",
    pointBorderWidth: 1,
    pointHoverRadius: 5,
    pointHoverBackgroundColor: "rgba(75,192,192,1)",
    pointHoverBorderColor: "rgba(220,220,220,1)",
    pointHoverBorderWidth: 2,
    pointRadius: 1,
    pointHitRadius: 10,
    data: evenData,
    spanGaps: false
  }]
};

// configure your chart options here
var options = {};

// ctx is a jQuery instance or 2d context of the canvas of where we want to draw the chart.
var myLineChart = new Chart(ctx, {
  type: 'line', 
  data: data, 
  options: options 
});