javascript - Google Chart 柱形图占据整个月的空间

标签 javascript jquery charts google-visualization

我有一个谷歌柱形图,我在一个月和一年内传递了它,并将轴格式化为以 MMM yyyy 格式显示它。但在实际图表和网格线上,Google 图表插入了默认日期 1。因此,图表看起来不太好。

我想要一个完整的专栏来涵盖整个月,但不知道如何实现这一目标。

enter image description here

我的代码是

static drawChartIssuesPerMonthForCompany(data) {
    let dataTable = new google.visualization.DataTable();

    dataTable.addColumn("date", "Months");
    dataTable.addColumn("number", "Issue Count");

    data.forEach(row => {
        console.log(data);
        dataTable.addRow([new Date(row.yearId, row.monthId - 1), row.issueCount]);
    });
    let chart = new google.visualization.ColumnChart(document.getElementById("detailedCharts"));
    
    let options = {
        title: "Monthly issues",
        hAxis: {
            title: "Months",
            gridelines: {
                count: -1
            },
            format: 'MMM yyyy'
        },
        vAxis: {
            gridlines: { color: 'none' },
            minValue: 0,
            title: "Issue Count",
            format: '#',
            maxValue: 4
        }
    };

    chart.draw(dataTable, options);

}

最佳答案

尝试使用“string”作为x轴,而不是“date”

dataTable.addColumn("string", "Months");

请参阅以下工作片段...

google.charts.load('current', {
  callback: drawChart,
  packages:['corechart']
});

function drawChart() {
    let data = [
      {yearId: 2017, monthId: 2, issueCount: 9},
      {yearId: 2017, monthId: 3, issueCount: 2},
      {yearId: 2017, monthId: 4, issueCount: 8}
    ];

    let dataTable = new google.visualization.DataTable();

    dataTable.addColumn("string", "Months");
    dataTable.addColumn("number", "Issue Count");

    let formatDate = new google.visualization.DateFormat({
      pattern: 'MMM yyyy'
    });

    data.forEach(row => {
        dataTable.addRow([formatDate.formatValue(new Date(row.yearId, row.monthId - 1)), row.issueCount]);
    });
    let chart = new google.visualization.ColumnChart(document.getElementById("detailedCharts"));

    let options = {
        title: "Monthly issues",
        hAxis: {
            title: "Months",
            gridelines: {
                count: -1
            }
        },
        vAxis: {
            gridlines: { color: 'none' },
            minValue: 0,
            title: "Issue Count",
            format: '#',
            maxValue: 4
        }
    };

    chart.draw(dataTable, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="detailedCharts"></div>

关于javascript - Google Chart 柱形图占据整个月的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43495319/

相关文章:

javascript - 如何在jqgrid中将一个单元格分成2个?

jquery - 如何更改 donut 莫里斯图表中的标签颜色(自定义标签颜色)

java - 如何将jsp页面的图表导出到excel页面

javascript - 使用 javascript 获取选定图层或图层组数组 (Photoshop CS4)

javascript - SketchUp -> Canvas

javascript - jQuery 滚动淡入崩溃

javascript - AngularJS 选择更改触发器

charts - ChartJs : X Axis labels cutting at bottom

javascript - 从 api 对象数组生成一个新对象

javascript - 如何以 Angular 查找给定数组列表的所有行中是否存在相同的值