【问题标题】:Google Charts: Line Chart with dynamic month names in hAxisGoogle Charts:在 hAxis 中具有动态月份名称的折线图
【发布时间】:2015-12-12 17:12:15
【问题描述】:

我正在尝试使用以下类型的数据点构建折线图。每个数据点包含以下数据:

  • 日期
  • 值 1
  • 值 2

这样的一个例子是:(2015-01-15, 'Value 1', 'Value 2')

我能够将这些数据放入带有两条单独线的折线图中,一条用于值 1,一条用于值 2。

现在的问题是 hAxis。我想让那里的月份名称动态显示的数据。如果我显示 2015 年 1 月到 2015 年 3 月的数据,我希望 hAxis 有 3 个部分:1 月、2 月、3 月。

我尝试了以下方法:

hAxis: {
   format: 'MM'
}

这基本上有效,但它现在只将我的图表分为 3 个部分,分别为 04、07 和 10。我如何解决每个月,它也存在于数据中,在 hAxis 中,其月份名称('三月'而不是'03')。

这是问题的代码:http://codepen.io/anon/pen/XmXQEO 你怎么看,hAxis 显示 04,07,10 而不是一月、二月、三月、四月、五月、六月、七月、八月、九月、十月、十一月、十二月。

编辑:Vadim Gremyachev 提供了标签格式问题的解决方案,我必须使用“MMMM”来获得完整的月份名称。现在缺少的一点是所有已使用的月份,而不仅仅是 3。

谢谢!

【问题讨论】:

    标签: javascript date charts google-visualization linechart


    【解决方案1】:

    您可以将hAxis.format 设置为MMMM 以将标签显示为月份名称。并且您可以提供hAxis.ticks 手动指定X 轴标签,以下示例演示如何显示所有月份标签

    google.load('visualization', '1', { packages: ['corechart', 'line'] });
    google.setOnLoadCallback(drawCurveTypes);
    
    function drawCurveTypes() {
        var data = new google.visualization.DataTable();
        data.addColumn('date', 'Day');
        data.addColumn('number', 'Value 1');
        data.addColumn('number', 'Value 2');
    
        data.addRows([
            [new Date('2015-01-01'), 40, 50],
            [new Date('2015-01-15'), 20, 80],
            [new Date('2015-02-01'), 20, 80],
            [new Date('2015-02-15'), 60, 30],
            [new Date('2015-03-01'), 40, 50],
            [new Date('2015-03-15'), 20, 80],
            [new Date('2015-04-01'), 20, 80],
            [new Date('2015-04-15'), 60, 30],
            [new Date('2015-05-01'), 40, 50],
            [new Date('2015-05-15'), 20, 80],
            [new Date('2015-06-01'), 20, 80],
            [new Date('2015-06-15'), 60, 30],
            [new Date('2015-07-01'), 40, 50],
            [new Date('2015-07-15'), 20, 80],
            [new Date('2015-08-01'), 20, 80],
            [new Date('2015-08-15'), 60, 30],
            [new Date('2015-09-01'), 40, 50],
            [new Date('2015-09-15'), 20, 80],
            [new Date('2015-10-01'), 20, 80],
            [new Date('2015-10-15'), 60, 30],
            [new Date('2015-11-01'), 40, 50],
            [new Date('2015-11-15'), 20, 80],
            [new Date('2015-12-01'), 20, 80],
            [new Date('2015-12-15'), 60, 30],
        ]);
    
        var dateTicks = [];
        for (var m = 1; m <= 12; m++)
            dateTicks.push(new Date('2015-' + m + '-1'));
    
        var options = {
            hAxis: {
                format: 'MMMM',
                ticks: dateTicks
            }
        };
    
        var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
        chart.draw(data, options);
    }
    <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <div id="chart_div"></div>

    【讨论】:

    • 非常感谢,这解决了标签格式的问题。现在我只需要显示所有使用过的月份,而不是只显示 3 个!
    • @NthDegree,更新后的答案显示了如何显示所有月份标签
    • 感谢@Vadim Gremyachev,这适用于显示所有月份。如果我现在只有来自例如的数据三月和四月,我只需要这两个月,所以我想我必须循环我的数据并为每个使用的月份添加一个刻度 - 我会试试看!
    • 是的,这听起来很合理
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多