谷歌折线图显示负值

Posted

技术标签:

【中文标题】谷歌折线图显示负值【英文标题】:Google LineChart Displaying Nagative Value 【发布时间】:2022-01-22 02:51:17 【问题描述】:

我正在使用以下代码显示 Google 折线图

google.charts.load('current', 'packages':['corechart']);  
      //google.charts.setOnLoadCallback(drawChart);
     
    function drawChart(chart_data) 
        
        
                
        
        var jsonData = chart_data;
            var data = new google.visualization.DataTable();
            data.addColumn('number', 'Day');
            data.addColumn('number', 'SOLD');
            data.addColumn('number', 'BOUGHT');
            $.each(jsonData, function(i, jsonData)
                var Day = parseFloat($.trim(jsonData.Day));
                var SOLD = parseFloat($.trim(jsonData.SOLD));
                var BOUGHT = parseFloat($.trim(jsonData.BOUGHT));
                data.addRows([[Day, SOLD, BOUGHT]]);
            );
      
        var options = 
                fontName: 'Roboto',
                height: 400,
                fontSize: 12,
                chartArea: 
                    left: '7%',
                    width: '93%',
                    height: 350
                ,
                pointSize: 10,
                curveType: 'function',
                backgroundColor: 'transparent',
                tooltip: 
                    textStyle: 
                        fontName: 'Roboto',
                        fontSize: 13
                    
                ,
                vAxis: 
                    title: '',
                    titleTextStyle: 
                        fontSize: 13,
                        italic: false,
                        color: '#333'
                    ,
                   
                    viewWindow: 
                        min: 0
                    ,
                    textStyle: 
                        color: '#333'
                    ,
                    baselineColor: '#ccc',
                    gridlines:
                        color: '#eee',
                        count: 10
                    
                   
                ,
                hAxis: 
                    textStyle: 
                        color: '#333'
                    
                ,
                legend: 
                    position: 'top',
                    alignment: 'center',
                    textStyle: 
                        color: '#333'
                    
                ,
                series: 
                    0:  color: '#f58646' ,
                    1:  color: '#66BB6A' 
                
            ;

        var chart = new google.visualization.LineChart(document.getElementById('google-line'));

        chart.draw(data, options);
      
  

如果数据大于 0,它可以正常工作,如下所示

但如果所有数据值都是0,则显示如下

我不想显示负数据,我的数据中永远不会有负值。因此,我在此处的一些问题中建议的选项中添加了如下代码。

viewWindow: 
  min: 0
,

但是它不起作用,我仍然显示负值。谁能帮我解决这个难题?同样在水平线上,它的缺失日期并以 5 个批次显示,如 5、10、15,是否可以全部显示?

谢谢!

【问题讨论】:

【参考方案1】:

这看起来像是'current' 版本的某种错误。 如果我们使用版本'45',它可以正常工作。

google.charts.load('45', ...

请参阅以下工作 sn-p...

google.charts.load('45', 
  packages: ['corechart']
).then(function() 
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'Day');
  data.addColumn('number', 'SOLD');
  data.addColumn('number', 'BOUGHT');
  data.addRows([
    [0, 0, 0],
    [5, 0, 0],
    [10, 0, 0],
    [15, 0, 0],
    [20, 0, 0],
    [25, 0, 0],
    [30, 0, 0]
  ]);

  var options = 
    fontName: 'Roboto',
    height: 400,
    fontSize: 12,
    chartArea: 
      left: '7%',
      width: '93%',
      height: 350
    ,
    pointSize: 10,
    curveType: 'function',
    backgroundColor: 'transparent',
    tooltip: 
      textStyle: 
        fontName: 'Roboto',
        fontSize: 13
      
    ,
    vAxis: 
      title: '',
      titleTextStyle: 
        fontSize: 13,
        italic: false,
        color: '#333'
      ,

      viewWindow: 
        min: 0
      ,
      textStyle: 
        color: '#333'
      ,
      baselineColor: '#ccc',
      gridlines: 
        color: '#eee',
        count: 10
      

    ,
    hAxis: 
      textStyle: 
        color: '#333'
      
    ,
    legend: 
      position: 'top',
      alignment: 'center',
      textStyle: 
        color: '#333'
      
    ,
    series: 
      0: 
        color: '#f58646'
      ,
      1: 
        color: '#66BB6A'
      
    
  ;

  var chart = new google.visualization.LineChart(document.getElementById('google-line'));

  chart.draw(data, options);
);
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="google-line"></div>

或者,当使用'current' 版本时, 如果我们将max 值添加到viewWindow,那么它将起作用...

google.charts.load('current', 
  packages: ['corechart']
).then(function() 
  var data = new google.visualization.DataTable();
  data.addColumn('number', 'Day');
  data.addColumn('number', 'SOLD');
  data.addColumn('number', 'BOUGHT');
  data.addRows([
    [0, 0, 0],
    [5, 0, 0],
    [10, 0, 0],
    [15, 0, 0],
    [20, 0, 0],
    [25, 0, 0],
    [30, 0, 0]
  ]);

  var options = 
    fontName: 'Roboto',
    height: 400,
    fontSize: 12,
    chartArea: 
      left: '7%',
      width: '93%',
      height: 350
    ,
    pointSize: 10,
    curveType: 'function',
    backgroundColor: 'transparent',
    tooltip: 
      textStyle: 
        fontName: 'Roboto',
        fontSize: 13
      
    ,
    vAxis: 
      title: '',
      titleTextStyle: 
        fontSize: 13,
        italic: false,
        color: '#333'
      ,

      viewWindow: 
        min: 0,
        max: 1
      ,
      textStyle: 
        color: '#333'
      ,
      baselineColor: '#ccc',
      gridlines: 
        color: '#eee',
        count: 10
      

    ,
    hAxis: 
      textStyle: 
        color: '#333'
      
    ,
    legend: 
      position: 'top',
      alignment: 'center',
      textStyle: 
        color: '#333'
      
    ,
    series: 
      0: 
        color: '#f58646'
      ,
      1: 
        color: '#66BB6A'
      
    
  ;

  var chart = new google.visualization.LineChart(document.getElementById('google-line'));

  chart.draw(data, options);
);
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="google-line"></div>

【讨论】:

是的,先生,它解决了难题。非常感谢!

以上是关于谷歌折线图显示负值的主要内容,如果未能解决你的问题,请参考以下文章

谷歌折线图双Y轴问题

多线谷歌折线图,使用来自 mySQL db 的数据

从 MYSQL 数据创建谷歌折线图

如何修改谷歌折线图的JSON字符串

我无法使用 mysql 表中的数据创建谷歌折线图

如何更改用于谷歌折线图的数据结构