【问题标题】:Not able to click on label in google chart api无法点击谷歌图表 api 中的标签
【发布时间】:2016-01-16 07:23:26
【问题描述】:

我是 javascript 新手,我正在使用 google chart api 来创建图表。我想点击下图中显示的左侧标签。所以,我的问题是我们可以点击左侧标签吗? 给我一些想法。如果可能的话,请帮助我。

function drawStackedChart(reqCategoryId,fcategoryName)
        {

        $.ajax({
        url: "http://localhost:8080/TheSanshaWorld/sfcms/fetch-complaint-result-for-other-category?categoryId="+reqCategoryId,
        datatype: "json",
        success : function(jsonData)
        {
        var data = new google.visualization.DataTable();
         // Add columns
        data.addColumn('string','categoryName');
        data.addColumn({type: 'number',role: 'interval'});
        var complaintStatus = jsonData[0].complaintStatus;

        for(var i=0;i<complaintStatus.length;i++)
        {
        data.addColumn('number',complaintStatus[i].statusName);
        data.addColumn({type: 'number',role: 'scope'});
        }
        data.addRows(jsonData.length);
        var maxVal=jsonData[0].totalCountComplaint;
        for(i=0;i<jsonData.length;i++)
        {  
// trying to create hyperlink
        data.setCell(i,0,'<a href="next.html">+jsonData[i].categoryName+</a>');
        data.setCell(i,1,jsonData[i].categoryId);
        for(j=0; j< jsonData[i].complaintStatus.length; j++)
        {
        data.setCell(i,parseInt(jsonData[i].complaintStatus[j].statusId)*2, jsonData[i].complaintStatus[j].countComplaint);
        data.setCell(i,parseInt(jsonData[i].complaintStatus[j].statusId)*2+1, jsonData[i].complaintStatus[j].statusId);
        }

        if(jsonData[i].totalCountComplaint>maxVal)
        maxVal=jsonData[i].totalCountComplaint;
        }
        var options = {
        title : fcategoryName+' Complaints Dashboard',
        titleTextStyle : {
        fontName : 'Arial',
        fontSize : 18,
        bold : true,
        },
        isStacked:true,
        chartArea: {width:'50%',height:'75%'},
        bar: {groupWidth: '50%'},
        tooltip : {
        isHtml : true,
        textStyle : {
        fontName : 'sans-serif',
        fontSize : 14,
        bold : false
        }
        },
        hAxis:{
        title:'status values',
        gridlines : {
        count : maxVal+1
           },
        baseline:maxVal,//static
        },
        vAxis:{
        title:'Complaint\'s categories',
        textStyle : {
        fontName : 'sans-serif',
        fontSize : 18,
        bold : false,
        },
        },
        };
        var chart = new google.visualization.BarChart(document.getElementById('donutchart'));
        chart.draw(data, options);

        new google.visualization.events.addListener(chart, 'select', selectionHandler);
        function selectionHandler() {
        // code for selection handler
    }

【问题讨论】:

    标签: javascript charts google-visualization pygooglechart pychart


    【解决方案1】:

    你可以使用'click'eventtargetID来查找被点击的标签

    当单击 y 轴标签时,targetID 将保持类似于以下的值...

    vAxis#0#label#0
    

    可以使用字符串方法split,查找数据中的标签值

    selection = e.targetID.split('#');
    

    当第一个值=vAxis时,表示点击了y轴标签

    if (selection[0].indexOf('vAxis') > -1) {
    

    第一个整数指的是y轴,本例中只有一个

    第二个整数指的是数据中的行

    获取点击的值...

    data.getValue(rowIndex, colIndex);
    

    例如

    data.getValue(parseInt(selection[selection.length - 1]), parseInt(selection[1])));
    

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

    google.charts.load('current', {
      callback: drawChart,
      packages:['corechart']
    });
    function drawChart() {
      var data = google.visualization.arrayToDataTable([
        ['Element', 'Density', { role: 'style' } ],
        ['Copper', 8.94, '#b87333'],
        ['Silver', 10.49, 'silver'],
        ['Gold', 19.30, 'gold'],
        ['Platinum', 21.45, 'color: #e5e4e2']
      ]);
    
      var options = {
        title: 'Density of Precious Metals, in g/cm^3',
        width: 600,
        height: 400,
        bar: {groupWidth: '95%'},
        legend: { position: 'none' },
      };
    
      var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
      google.visualization.events.addListener(chart, 'click', function(e) {
        var selection;
        if (e.targetID) {
          selection = e.targetID.split('#');
          if (selection[0].indexOf('vAxis') > -1) {
            console.log('label clicked = ' + data.getValue(parseInt(selection[selection.length - 1]), parseInt(selection[1])));
          }
        }
      });
      chart.draw(data, options);
    }
    <script src="https://www.gstatic.com/charts/loader.js"></script>
    <div id="chart_div"></div>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 2012-09-27
      • 2017-03-17
      • 2020-09-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多