javascript - 使用 Chart.js 和关联数组生成条形图

标签 javascript arrays chart.js associative-array

我有关联数组,我想使用 Chart.JS 库显示它。

My Array:

array:4 [▼
  0 => array:3 [▼
    "faculty" => "Information Technology"
    "category" => "ELearning"
    "counter" => 2
  ]
  1 => array:3 [▼
    "faculty" => "Information Technology"
    "category" => "Webex"
    "counter" => 2
  ]
  2 => array:3 [▼
    "faculty" => "Masscom"
    "category" => "ELearning"
    "counter" => 3
  ]
  3 => array:3 [▼
    "faculty" => "Masscom"
    "category" => "Webex"
    "counter" => 3
  ]
]

What I am trying to do:

我试图展示: - 底部的功能作为标签 - 对于每个教师,我想显示所有类别及其计数器

例如:

1) 信息技术具有值(value)为 2 的电子学习类别,并且具有值(value)为 2 的 Webex 类别

2) Masscom 具有值为 3 的 ELearning 类别,并且具有值为 3 的 Webex 类别

JS Code:

var faculties = ['Information Technology', 'Masscom'];
var f = document.getElementById("mybarChart");
new Chart(f, {
    type: "bar",
    data: {
       labels: faculties,
       datasets: ....
    },
})

最佳答案

本质上,您需要为每个类别提供一个数据集。每个数据集都需要每个教师的数据条目。

使用下面的代码,您将得到一个如下所示的图表:

chart from JS fiddle code

// this will get distinct faculty and sort
const faculties = [...new Set(data.map(v => v['faculty']))].sort();

// this will get distinct category and sort
const categories = [...new Set(data.map(v => v['category']))].sort();

const datasets = categories.map(category => ({
  label: category,
  data: faculties.map(faculty => {
    const value = data.find(v => v['faculty'] === faculty && v['category'] === category);

    return value['counter'];
  })
}));

const canvas = document.getElementById('mybarChart');

new Chart(canvas, {
  type: 'bar',
  data: {
    labels: faculties,
    datasets: datasets
  }
});

我创建了一个 jsfiddle 到 show the code running .

关于javascript - 使用 Chart.js 和关联数组生成条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55661360/

相关文章:

javascript - chart.js (v2+) 图例中的返回百分比

javascript - PHP - 不安全的文件编辑,删除所有数据

javascript - 使用 kineticjs 在 Canvas 上创建覆盖并删除部分覆盖

javascript - 使用 Javascript 缩放网页的所有内容

c++ - 阵列分段故障

java - 简单的Java数组问题

javascript - Charts.js 销毁以前的数据并更新

javascript - 在我们的组件主体外部声明函数之间有什么区别吗?

java - 如何将 int[] 转换为 OpenCV Mat? (反之亦然)

javascript - Charts.js - 仅显示最后一个值的数据标签