分组条形图,在chart.js中

von4xj4u  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(292)

我见过其他支持分组条形图的javascript图表库,如下图所示,但我没有在chart.js的在线编辑器中看到这是一个显式选项。
有没有可能在chart.js中做这种分组条形图?容易吗?他们的在线编辑器中有没有针对它的模板?

flvtvl50

flvtvl501#

是的,您可以使用datasets属性提供多个数据集,该属性是一个包含值分组的数组。每个数据集在data中包含一系列与labels相对应的值。
根据您的Chart.js版本,请参阅下面两个略有不同的示例。
图表. js版本1.x

  1. var ctx = document.getElementById("myChart").getContext("2d");
  2. var data = {
  3. labels: ["Chocolate", "Vanilla", "Strawberry"],
  4. datasets: [
  5. {
  6. label: "Blue",
  7. fillColor: "blue",
  8. data: [3,7,4]
  9. },
  10. {
  11. label: "Red",
  12. fillColor: "red",
  13. data: [4,3,5]
  14. },
  15. {
  16. label: "Green",
  17. fillColor: "green",
  18. data: [7,2,6]
  19. }
  20. ]
  21. };
  22. var myBarChart = new Chart(ctx).Bar(data, { barValueSpacing: 20 });

请参阅this JSFiddle

图表. js版本2.x

  1. var ctx = document.getElementById("myChart").getContext("2d");
  2. var data = {
  3. labels: ["Chocolate", "Vanilla", "Strawberry"],
  4. datasets: [
  5. {
  6. label: "Blue",
  7. backgroundColor: "blue",
  8. data: [3,7,4]
  9. },
  10. {
  11. label: "Red",
  12. backgroundColor: "red",
  13. data: [4,3,5]
  14. },
  15. {
  16. label: "Green",
  17. backgroundColor: "green",
  18. data: [7,2,6]
  19. }
  20. ]
  21. };
  22. var myBarChart = new Chart(ctx, {
  23. type: 'bar',
  24. data: data,
  25. options: {
  26. barValueSpacing: 20,
  27. scales: {
  28. yAxes: [{
  29. ticks: {
  30. min: 0,
  31. }
  32. }]
  33. }
  34. }
  35. });

请参阅this JSFiddle

展开查看全部
vsdwdz23

vsdwdz232#

是的,可以在chart.js中制作这种分组条形图,而且非常简单

循序渐进:-
步骤1:-

首先添加charts.js的脚本链接:-

  1. <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/1.0.2/Chart.min.js"></script>

步骤2:-

在html正文中添加div '

  1. <body>
  2. <table>
  3. <tr>
  4. <td>
  5. <div id="chart_div" style="width: 800px; height: 300px;">
  6. </div>
  7. </td>
  8. </tr>
  9. </table>
  10. </body>

步骤3:-

  1. <script>
  2. var densityCanvas = document.getElementById("densityChart");
  3. var Data1 = {
  4. label: 'A',
  5. data: [3.7, 8.9, 9.8, 3.7, 23.1, 9.0, 8.7, 11.0],
  6. backgroundColor: 'rgba(99, 132, 0, 0.6)',
  7. borderColor: 'rgba(99, 132, 0, 1)',
  8. yAxisID: "y-axis-gravity"
  9. }
  10. var Data2 = {
  11. label: 'B',
  12. data: [3.7, 8.9, 9.8, 3.7, 23.1, 9.0, 8.7, 11.0],
  13. backgroundColor: 'rgba(99, 132, 0, 0.6)',
  14. borderColor: 'rgba(99, 132, 0, 1)',
  15. //yAxisID: "y-axis-gravity"
  16. }
  17. var Data3 = {
  18. label: 'C',
  19. data: [3.7, 8.9, 9.8, 3.7, 23.1, 9.0, 8.7, 11.0],
  20. backgroundColor: 'rgba(99, 132, 0, 0.6)',
  21. borderColor: 'rgba(99, 132, 0, 1)',
  22. //yAxisID: "y-axis-gravity"
  23. }

***注-***:您可以创建多个要显示的变量数据,并仅将yAxisID赋予一个变量数据,然后将其显示为一个组y轴

  1. var planetData = {
  2. labels: ["A", "B", "C"],
  3. datasets: [Data1,Data2, Data3 ]
  4. };
  5. var chartOptions = {
  6. scales: {
  7. xAxes: [{
  8. barPercentage: 1,
  9. categoryPercentage: 0.4
  10. }],
  11. yAxes: [{
  12. id: "y-axis-Registered"
  13. }
  14. ]
  15. }
  16. };
  17. var barChart = new Chart(densityCanvas, {
  18. type: 'bar',
  19. data: planetData,
  20. options: chartOptions
  21. });
  22. </script>

***注意:-***当我试图使用这个离线Chart.js库,并为我的情况创建图表,然后这个漂亮的解决方案帮助我很多:-

图片中上次查看:-In picture Last Look

展开查看全部

相关问题