javascript - ColumnChart 不显示所有字符串标签

标签 javascript charts google-visualization column-chart

我有以下与 ColumnChart ( https://developers.google.com/chart/interactive/docs/gallery/columnchart ) 相关的问题。

如果标签(当您将鼠标悬停在任何看起来像工具提示的列中时)设置为数字,则所有 2000 个项目都会正确显示。但是,如果将标签设置为字符串,它只会在图表中显示 289 个项目,并且由于未知原因缺少 1711 列。

我有这段代码(标签设置为字符串,只显示 289 个项目而不是 2000 个): http://jsfiddle.net/c809mbjx/11/

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('string' ,'Day');
    data.addColumn('number', 'Matches');
    var dataArray = []
    let number = 2000
    data.addRows(number);
    for (var i = 0; i < number;i++) {
     data.setCell(i,0,"aaa_"+i)
     data.setCell(i,1,i);
    }
    //var data = new google.visualization.arrayToDataTable(dataArray);        
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    var view = new google.visualization.DataView(data);
        view.setColumns([0, 1]);
    var options = {
            colors: ['#0095e8'],
            hAxis: {textPosition: 'none'},
            vAxis: {minValue: 0, viewWindow: {min: 0}},
            legend: 'none',
            animation: {duration: 10000, easing: 'out'}
        };
    chart.draw(view, options);
}
google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});

此代码(标签设置为数字且工作正常): http://jsfiddle.net/c809mbjx/12/

function drawChart() {
    var data = new google.visualization.DataTable();
    data.addColumn('number' ,'Day');
    data.addColumn('number', 'Matches');
    var dataArray = []
    let number = 2000
    data.addRows(number);
    for (var i = 0; i < number;i++) {
     data.setCell(i,0,i)
     data.setCell(i,1,i);
    }
    //var data = new google.visualization.arrayToDataTable(dataArray);        
    var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
    var view = new google.visualization.DataView(data);
        view.setColumns([0, 1]);
    var options = {
            colors: ['#0095e8'],
            hAxis: {textPosition: 'none'},
            vAxis: {minValue: 0, viewWindow: {min: 0}},
            legend: 'none',
            animation: {duration: 10000, easing: 'out'}
        };
    chart.draw(view, options);
}
google.load('visualization', '1', {packages: ['corechart'], callback: drawChart});

最佳答案

我们可以在 x 轴上使用数字,但仍会在工具提示上显示字符串。
这可以通过设置 setCell 方法的最后一个参数来实现 --> formattedValue

setCell(rowIndex, columnIndex, value, formattedValue)

工具提示默认会显示格式化后的值。
所以我们提供数字作为值,我们自己的字符串作为格式化值。

   data.setCell(i,0,i,"aaa_"+i);

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

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

function drawChart() {
  var data = new google.visualization.DataTable();
  data.addColumn('number' ,'Day');
  data.addColumn('number', 'Matches');
  let number = 2000;
  data.addRows(number);
  for (var i = 0; i < number;i++) {
   data.setCell(i,0,i,"aaa_"+i);
   data.setCell(i,1,i);
  }
  var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));
  var view = new google.visualization.DataView(data);
  view.setColumns([0, 1]);
  var options = {
    colors: ['#0095e8'],
    hAxis: {textPosition: 'none'},
    vAxis: {minValue: 0, viewWindow: {min: 0}},
    legend: 'none',
    animation: {duration: 10000, easing: 'out'}
  };
  chart.draw(view, options);
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div" style="width: 900px; height: 500px;"></div>


注意:使用 jsapi 加载的 google charts 版本已被弃用,不应再使用。

相反,使用loader.js,这只会改变加载语句。
看上面的片段...

关于javascript - ColumnChart 不显示所有字符串标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66224253/

相关文章:

java - 使用 JPanel 将 ChartPanel 添加到 JTabbedPane

graph - 如何强制双 y 轴图对每个轴使用相同的基线?

javascript - JSON application/json header 在 chrome/IE 上不起作用,但在 Firefox 上工作正常

javascript - 谷歌图表工具提示在悬停时闪烁,如何解决?

ios - 是否可以同时使用 Xcode 和 Adob​​e Flex 进行开发?

javascript - 将 JSON 加载到 Google 面积图中

javascript - Google Graphs 轴顺序

javascript - 如何使用javascript或html打开手机chrome浏览器

javascript - 获取子元素的所有 id

javascript - 使用jquery更改另一个元素下的html元素类