【问题标题】:Scrollable Stacked Column Chart using highcharts?使用highcharts的可滚动堆积柱形图?
【发布时间】:2013-03-31 18:11:55
【问题描述】:

我需要创建一个堆积柱形图来显示为如下需求捕获的数据。

显示员工针对不同项目(Project1、Project2、Project3)的工作时间。

我尝试使用 Highcharts。当我尝试为图表启用可滚动功能时,由于员工数量可能更多,因此标签(员工姓名)不会显示在 X 轴上。

另外,滚动似乎不正确。

任何人都可以帮助我使此图表可滚动,并将员工姓名显示为 X 轴上的标签。

我已经分享了我目前在 中创建的图表,

http://jsfiddle.net/sri421/Yyq5N/1/

代码也如下, $(函数(){ $('#container').highcharts('StockChart', {

    chart: {
        type: 'column',
        inverted:true
    },
      title: {
            text: 'Total Hours worked Vs Different Projects'
        },
      xAxis: {
            categories: ['user1', 'user2', 'user3', 'user4', 'user5','user6', 'user7', 'user8', 'user9', 'user10','user11', 'user12', 'user13', 'user14', 'user15','user16', 'user17', 'user18', 'user19', 'user20'],
             labels: {
                rotation: -45,
                align: 'right',
                style: {
                    fontSize: '13px',
                    fontFamily: 'Verdana, sans-serif'
                }
            }

        },
    yAxis: {
            min: 0,
            title: {
                text: 'Total Hours Worked'
            },
            stackLabels: {
                enabled: true,
                style: {
                    fontWeight: 'bold',
                    color: (Highcharts.theme && Highcharts.theme.textColor) || 'red'
                }
            }
        },

        plotOptions: {
            column: {
                stacking: 'normal'

            }
        },
    scrollbar: {
        enabled:true

    },

    rangeSelector: {
        enabled: false
    },

    series: [{
            name: 'Project1',
            data: [5, 3, 4, 7, 2,5, 3, 4, 7, 2 ,5, 3, 4, 7, 2,5, 3, 4, 7, 2]
        }, {
            name: 'Project2',
           data: [2, 2, 3, 2, 1,5, 3, 4, 7, 2, 5, 3, 4, 7, 2,5, 3, 4, 7, 2]
        }, {
            name: 'Projecct3',
            data: [3, 4, 4, 2, 5,5, 3, 4, 7, 2, 5, 3, 4, 7, 2,5, 3, 4, 7, 2]
        }]
});

}); 谢谢, 斯里

【问题讨论】:

  • 是由于在highstock中使用了category,在highstock中是不支持的。所以你可以用highcharts替换它jsfiddle.net/Yyq5N/3

标签: charts highcharts scrollable stacked


【解决方案1】:

您可以使用 amCharts 制作可滚动/堆叠柱形图:http://jsfiddle.net/zeroin/mmmv2/

代码:

AmCharts.ready(function () { var chartData = [ {category:"user1", val1:1, val2:1, val3:1}, {category:"user2", val1:2, val2:1, val3:2}, {category:"user3", val1:1, val2:1, val3:4}, {category:"user4", val1:2, val2:1, val3:2}, {category:"user5", val1:1, val2:1, val3:5}, {category:"user6", val1:2, val2:1, val3:2}, {category:"user7", val1:1, val2:1, val3:3}, {category:"user8", val1:2, val2:1, val3:1}, {category:"user9", val1:1, val2:1, val3:3}, {category:"user10", val1:2, val2:1, val3:4}, {category:"user11", val1:1, val2:1, val3:3}, {category:"user12", val1:2, val2:1, val3:3}, {category:"user13", val1:1, val2:1, val3:3}, {category:"user14", val1:2, val2:1, val3:1} ]; var chart = new AmCharts.AmSerialChart(); chart.pathToImages = "http://www.amcharts.com/lib/images/"; chart.dataProvider = chartData; chart.categoryField = "category"; var valueAxis = new AmCharts.ValueAxis(); valueAxis.stackType = "regular"; valueAxis.totalText = "[[total]]"; chart.addValueAxis(valueAxis); var graph1 = new AmCharts.AmGraph(); graph1.valueField = "val1"; graph1.type = "column"; graph1.fillAlphas = 1; chart.addGraph(graph1); var graph2 = new AmCharts.AmGraph(); graph2.valueField = "val2"; graph2.type = "column"; graph2.fillAlphas = 1; chart.addGraph(graph2); var graph3 = new AmCharts.AmGraph(); graph3.valueField = "val3"; graph3.type = "column"; graph3.fillAlphas = 1; chart.addGraph(graph3); var chartScrollbar = new AmCharts.ChartScrollbar(); chart.addChartScrollbar(chartScrollbar); chart.write("chartdiv"); });

【讨论】: