ChartJS 图表2:图表中的多级/分层类别轴

zphenhs4  于 2022-11-06  发布在  Chart.js
关注(0)|答案(4)|浏览(263)

是否可以定义具有多级/类别轴的条形图?
例如,我想显示区域/省类别,如以下Excel图表所示:

我找到了使用多个xAxx 1 e0f1x示例。

xAxes:[
    {
      id:'xAxis1',
      type:"category",
      ticks:{
        callback:function(label){
          var month = label.split(";")[0];
          var year = label.split(";")[1];
          return month;
        }
      }
    },
    {
      id:'xAxis2',
      type:"category",
      gridLines: {
        drawOnChartArea: false, // only want the grid lines for one axis to show up
      },
      ticks:{
        callback:function(label){
          var month = label.split(";")[0];
          var year = label.split(";")[1];
          if(month === "February"){
            return year;
          }else{
            return "";
          }
        }
      }
    }
  ]

问题是,两个轴似乎没有真正连接,第二个轴的对齐是基于值,而不是在较低级别类别的中间对齐。
在chart.js中是否有一种简洁的方法来实现这一点?

**更新:**我最终在chartjs上创建了一个feature request

t40tm48m

t40tm48m1#

您可以通过datesets为不同的轴分别提供值,并为对象提供不同的配置选项(borderColor, pointBackgroundColor, pointBorderColor)等,我希望它会有所帮助。
这里是的链接,带有更新(您共享的小提琴)Updated Fiddle

data: {
labels: ["January;2015", "February;2015", "March;2015", "January;2016", "February;2016", "March;2016"],
datasets: [{
  label: '# of Votes',
  xAxisID:'xAxis1',
  data: [12, 19, 3, 5, 2, 3]
},

// here i added another data sets for xAxisID 2 and it works just fine
{
  label: '# of Potatoes',
  xAxisID:'xAxis2',
  data: [9, 17, 28, 26, 29, 9]
}]

}
我希望这能解决你的问题:)

h43kikqp

h43kikqp2#

希望这能有所帮助,
我做了一些研究,但没有找到在chartjs中实现您的解决方案的方法。Chartjs有分组的条形图,但没有像您这样的子分组条形图。

Example: http://jsfiddle.net/harshakj89/ax3zxtzw/

以下是一些替代方案

D3js(https://d3js.org/)可以用来创建子分组条形图。数据可以从csv或json加载。D3是高度可配置的,但你可能要付出一些努力比chartsjs。

https://plnkr.co/edit/qGZ1YuyFZnVtp04bqZki?p=preview
https://stackoverflow.com/questions/37690018/d3-nested-grouped-bar-chart
https://stackoverflow.com/questions/15764698/loading-d3-js-data-from-a-simple-json-string

ZingChart是一个商业工具,可用于实现具有子组的条形图。
https://www.zingchart.com/docs/chart-types/bar-charts/
但是我更喜欢D3而不是这个库。因为D3是在BSD许可证下的。

zazmityj

zazmityj3#

这应该会按照您的要求工作http://tobiasahlin.com/blog/chartjs-charts-to-get-you-started/#8-grouped-bar-chart

5f0d552i

5f0d552i4#

我所能找到的具有此特性的最佳库是Highcharts,这是我的实现:

和这里的http://jsfiddle.net/fieldsure/Lr5sjh5x/2/,您可以了解如何实现它。
第一个
但问题是这个库并不是免费用于商业用途的,这是Chartjs implementation,在我的例子中它是这样的:
第一个
对于每多一列,只需添加另一个数据集。

相关问题