【问题标题】:stacked column chart for two data sets - Google Charts两个数据集的堆积柱形图 - Google Charts
【发布时间】:2019-07-03 21:59:51
【问题描述】:

我正在生成一些 Google 图表,但我被困在这里。 Google 允许您将列堆叠起来。但它要么受到限制,要么我无法将其配置为工作。取自 Google,下面是一个显示两个国家/地区每年生产的咖啡杯数的示例:

假设我有另一个相同两个国家/地区的数据集,但这次我用的是速溶咖啡而不是咖啡粉。示例:

我想做的是将这两个数据集堆叠在一起。所以每一列都是一个国家,但有两个部门:豆类和速溶咖啡。

我在想是否有办法按以下方式格式化数据表:

['Year', 'Austria', 'Austria (instant)', 'Bulgaria', 'Bulgaria (instant')],
['2003', 1736060, 10051, 250361, 68564],
['2004', 1338156, 65161, 786849, 1854654],
['2005', 1276579, 65451, 120514, 654654]

生成类似的东西

感谢您的帮助。

【问题讨论】:

标签: charts google-visualization stacked


【解决方案1】:

我今天刚遇到同样的问题,并点击了您的提交链接。好像最近有人这样回复:

“这实际上可以通过新的材料条形图实现(尽管在 有点迂回的方式)。在新图表中,如果您制作图表 堆叠,但将一些系列放在不同的轴上,这会创建一个 这些系列的单独堆栈。遗憾的是,目前没有 完全隐藏轴的方法,您必须明确 设置视图窗口。最终我们将介绍隐藏轴的选项 并对齐视图窗口,但现在必须这样做。”

这个小提琴似乎帮我解决了这个问题:http://jsfiddle.net/p7o0pjgg/

代码如下:

google.load('visualization', '1.1', {
    'packages': ['bar']
});
google.setOnLoadCallback(drawStuff);

function drawStuff() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Topping');
    data.addColumn('number', 'Nescafe Instant');
    data.addColumn('number', 'Folgers Instant');
    data.addColumn('number', 'Nescafe Beans');
    data.addColumn('number', 'Folgers Beans');
    data.addRows([
        ['2001', 321, 621, 816, 319],
        ['2002', 163, 231, 539, 594],
        ['2003', 125, 819, 123, 578],
        ['2004', 197, 536, 613, 298]
    ]);

    // Set chart options
    var options = {
        isStacked: true,
        width: 800,
        height: 600,
        chart: {
            title: 'Year-by-year coffee consumption',
            subtitle: 'This data is not real'
        },
        vAxis: {
            viewWindow: {
                min: 0,
                max: 1000
            }
        },
        series: {
            2: {
                targetAxisIndex: 1
            },
            3: {
                targetAxisIndex: 1
            }
        }
    };

    // Instantiate and draw our chart, passing in some options.
    var chart = new google.charts.Bar(document.getElementById('chart_div'));
    chart.draw(data, google.charts.Bar.convertOptions(options));
};

【讨论】:

  • 我刚才真的看到了你的答案;)只是因为我很久以前就放弃了这个要求,并且没有意识到一年多前有一个新的答案!但是小提琴足以证明它实际上是解决方案。谢谢
  • 图书馆的最新版本是否仍然可行?上面的代码不适用于当前版本
  • @Julien 我相信它在原则上仍然有效。提供的 JSFiddle 示例可能有一个小错误阻止它工作。请参阅下面的答案以获取工作副本。
  • 我有一种感觉不适用于组合图表。我从谷歌图表文档中提取了小提琴并添加了targetAxisIndex:it does not work。我错过了什么吗?
  • 在上面的图表中添加注释需要遵循哪些步骤?
【解决方案2】:

可视化 API 不支持为每行数据创建多个列堆栈。如果需要,您可以创建 feature request 以添加对此的支持。

【讨论】:

  • 感谢朋友,刚刚提交了功能请求。如果他们真的添加它,那就太酷了。
  • 这里是请求的链接:multiple stacked bar charts
  • 图表中有四列,但我只想堆叠两列,怎么办?
【解决方案3】:

您可以使用stacked column chart 进行操作,其中一组(例如研磨咖啡)的所有数据系列位于左轴,另一组的所有数据系列位于右轴(速溶咖啡)。

数据和堆积柱形图设置

第 2 组系列移至右轴

【讨论】:

    【解决方案4】:

    Dan Hogan 的回答对我有用。但是,JSFiddle 示例似乎不起作用(不确定,为什么。)这是一个适合我的版本。

    google.charts.load('current', {'packages': ['bar']});
    google.charts.setOnLoadCallback(function() {
        $('.service-usage-graph').each(function() {
    
            var table = new google.visualization.DataTable();
            table.addColumn('string', 'Date');
            table.addColumn('number', 'UL Peak');
            table.addColumn('number', 'UL Off-peak');
            table.addColumn('number', 'DL Peak');
            table.addColumn('number', 'DL Off-peak');
    
            table.addRow(['2001-01-01', 1, 2, 3, 4]);
            table.addRow(['2001-01-03', 3, 2, 4, 2]);
            table.addRow(['2001-01-04', 2, 2, 4, 2]);
            table.addRow(['2001-01-05', 0, 1, 4, 5]);
            table.addRow(['2001-01-06', 9, 2, 6, 8]);
            table.addRow(['2001-01-07', 2, 2, 7, 3]);
            var chart = new google.charts.Bar(this);
            var options = google.charts.Bar.convertOptions({
                isStacked: true,
                series: {
                    2: { targetAxisIndex: 1 },
                    3: { targetAxisIndex: 1 }
                },
                vAxis: {
                  viewWindow: {
                    max: 15,
                  }   
                }   
            });
            chart.draw(table, options);
        });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div class="service-usage-graph"></div>

    【讨论】:

    • 图表中有四列,但我只想堆叠两列,怎么办?
    • 有没有办法在上图中添加注释?
    猜你喜欢
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    相关资源
    最近更新 更多