Google 可视化多个图表 - 选项不起作用

问题描述

我有一个多图表 Google 可视化脚本(1 个柱状图和 2 个折线图)。除 var Options 代码外,图表均正常工作/显示。选项部分最重要的部分是能够更改列/线条颜色。所以我尝试使用 role: 'style'} 替代方法更改它,但它也不起作用。

请参阅以下 3 个图表的代码。我是 Google Visualization 的新手,非常感谢您提供任何反馈/帮助!

google.charts.load('current',{
  packages: ['corechart','controls']
}).then(function () {
          
  // Chart data
  var data = [];
  data[0] = google.visualization.arrayToDataTable ([["Date","Sessions",{role: 'style'}],<?PHP
                                    for($a = 0; $a < 7; $a++)
                                    {
                                        echo "['".$date[$a]."',".$sessions[$a].",'fill-color: #76A7FA'],";
                                    }
                                ?>
                                                    ]);
  data[1] = google.visualization.arrayToDataTable ([["Date","Sessions"],<?PHP
                                    for($a = 0; $a < 31; $a++)
                                    {
                                        echo "['".$date[$a]."',".$sessions[$a]."],";
                                    }
                                ?>
                                                    ]);
  data[2] = google.visualization.arrayToDataTable ([["Date",<?PHP
                                    for($a = 0; $a < count($query); $a++)
                                    {
                                        echo "['".$date[$a]."',";
                                    }
                                ?>
                                                    ]);
    
  var current = 0;
  var current_chart = 0;

  // Create and draw the visualization
  var chart = [];
  chart[0] = new google.visualization.ColumnChart(document.getElementById('sessions_chart'));

  chart[1] = new google.visualization.LineChart(document.getElementById('sessions_chart'));
  
  function drawChart() {
    // disabling the buttons while the chart is drawing.
    document.getElementById('week_btn').disabled = true;
    document.getElementById('month_btn').disabled = true;
    document.getElementById('all_btn').disabled = true;
    google.visualization.events.addListener(chart,'ready',function() {
    // Enable the buttons after the chart has been drawn
    document.getElementById('week_btn').disabled = false;
    document.getElementById('month_btn').disabled = false;
    document.getElementById('all_btn').disabled = false;
    });
    
    var view = new google.visualization.DataView(data[current]);    
  
    var options = {
                    title: 'Number of Sessions',vAxis: {title: "# of Sessions",minValue:0},hAxis: {format: 'MMM d,y'},colors: 'lightgreen'
                };  

    // Convert first column to date format
    view.setColumns([{
        calc: function (dt,row) {
            return new Date(dt.getValue(row,0));
        },label: data[current].getColumnLabel(0),type: 'date'
    },1]);  
      
    chart[current_chart].draw(view,data[current],options);
  }
  drawChart();
    // google.charts.setonLoadCallback(drawChart);

document.getElementById('week_btn').addEventListener("click",displayWeek);
function displayWeek() {
  current = 0;
  current_chart = 0;
  drawChart();
}  
document.getElementById('month_btn').addEventListener("click",displayMonth);
function displayMonth() {
  current = 1;
  current_chart = 1;
  drawChart();
}  
document.getElementById('all_btn').addEventListener("click",displayAll);
function displayAll() {
  current = 2;
  current_chart = 1;
  drawChart();
}  
});

解决方法

颜色选项应该是一个数组...

colors: ['lightgreen']

至于风格角色,尽量只提供颜色...

echo "['".$date[$a]."',".$sessions[$a].",'#76A7FA'],";

强烈建议不要在 php 中从字符串手动构建 json。

相反,在两个不同的文件中将 php 与 html 分开。
在php中构建数据并将编码后的json返回给页面。
然后使用ajax调用php页面,获取编码后的json。
然后绘制图表。

这里有一些例子...
How to automatically update Google Gauge
JSON $ajax problems

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...