javascript - Chart.JS 多线图表,来自 JSON 的行数未知

标签 javascript json multidimensional-array chart.js

我尝试使用chart.js 制作多线图。我有一个来自数据库的 json 数据集。数据集的数量可以不同。这是一个 JSON 数据的示例(x 可以更多)。

[{"name":"name1","jan":4067.5,"feb":1647,
"mrz":1375,"apr":10191,"mai":0,"jun":28679,"jul":59502},
{"name":"name2","jan":47548,"feb":63280.5,
"mrz":51640.26,"apr":75029,"mai":41137,"jun":89114.26,"jul":77332},
{"name":"name3","jan":38099,"feb":55023.5,
"mrz":62668,"apr":39482,"mai":44193.3,"jun":52826.5,"jul":77072},
{"name":"namex","jan":34930.5,"feb":36831.5,
"mrz":24391,"apr":35051,"mai":38038,"jun":12700,"jul":51080}]

我已经缩短了示例,实际上直到 12 月为止。

我尝试为每个名字绘制一条线的图表。 X 轴应为 1 月至 12 月,Y 轴应为销售额。

34/5000

最佳答案

据我了解,您的数据集将动态更新。

您只需更改数据集,然后调用 update() 函数即可。

例如:

首先使用所有数据初始化图表:

var canvas = document.getElementById("barChart");
var ctx = canvas.getContext('2d');

var data = {
  labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
  datasets: [{
      label: "name 1",
      fill: false,
      lineTension: 0.1,
      backgroundColor: "rgba(225,0,0,0.4)",
      borderColor: "red",
      borderCapStyle: 'square',
      borderDash: [],
      borderDashOffset: 0.0,
      borderJoinStyle: 'miter',
      pointBorderColor: "black",
      pointBackgroundColor: "white",
      pointBorderWidth: 1,
      pointHoverRadius: 8,
      pointHoverBackgroundColor: "yellow",
      pointHoverBorderColor: "brown",
      pointHoverBorderWidth: 2,
      pointRadius: 4,
      pointHitRadius: 10,
      data: [65, 59, 80, 81, 56, 55, 40, ,60,55,30,78]
    }, {
      label: "name 2",
      fill: true,
      lineTension: 0.1,
      backgroundColor: "rgba(167,105,0,0.4)",
      borderColor: "rgb(167, 105, 0)",
      borderCapStyle: 'butt',
      borderDash: [],
      borderDashOffset: 0.0,
      borderJoinStyle: 'miter',
      pointBorderColor: "white",
      pointBackgroundColor: "black",
      pointBorderWidth: 1,
      pointHoverRadius: 8,
      pointHoverBackgroundColor: "brown",
      pointHoverBorderColor: "yellow",
      pointHoverBorderWidth: 2,
      pointRadius: 4,
      pointHitRadius: 10,
      data: [10, 20, 60, 95, 64, 78, 90,,70,40,70,89]
    }

  ]
};

var options = {
  scales: {
            yAxes: [{
                ticks: {
                    beginAtZero:true
                },
                scaleLabel: {
                     display: true,
                     labelString: 'Moola',
                     fontSize: 20 
                  }
            }]            
        }  
};

// Chart declaration:
var myBarChart = new Chart(ctx, {
  type: 'line',
  data: data,
  options: options
});

如果您以后想要更新数据,您可以:

myBarChart.data.datasets = [{
      label: "name 3",
      fill: true,
      lineTension: 0.1,
      backgroundColor: "rgba(167,105,0,0.4)",
      borderColor: "rgb(167, 105, 0)",
      borderCapStyle: 'butt',
      borderDash: [],
      borderDashOffset: 0.0,
      borderJoinStyle: 'miter',
      pointBorderColor: "white",
      pointBackgroundColor: "black",
      pointBorderWidth: 1,
      pointHoverRadius: 8,
      pointHoverBackgroundColor: "brown",
      pointHoverBorderColor: "yellow",
      pointHoverBorderWidth: 2,
      pointRadius: 4,
      pointHitRadius: 10,
      data: [10, 20, 60, 95, 64, 78, 90,,70,40,70,89]
    },
    ...............
];

myBarChart.update();

此外,您还需要以可与图表一起使用的方式设置数据格式。 设置数据格式,以便您可以创建正确的数据集。

关于javascript - Chart.JS 多线图表,来自 JSON 的行数未知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58153084/

相关文章:

javascript - 无法获取 jQuery.parseJSON() 值

java - 需要关于如何从图表中存储大数据的建议

c - 动态分配数组时出错。 vfscanf.c : 1898

javascript - 为 CSS 元素分配一个类

javascript - Web Audio API 分析器节点 getByteFrequencyData 返回空白数组

javascript - 在 iOS 和 Android 上打开键盘时,如何将元素保留在页面底部?

javascript - Gulp 找到我的 Bower 组件并将它们连接起来

python - Peewee 连接池与 postgresql 9.4 和 JSON 字段支持

c# - 使用 StackService.Text 和 JSON 作为对象列表

python - Pandas 放大多维物体