2017-05-23 18 views
1

Google Charts APIの最新バージョンを使用してください。Googleチャートの凡例にツールチップを追加するには

私は単純な棒グラフを持っており、凡例の各項目が何であるかを説明する凡例の要素の上にカーソルを置くとツールチップが表示されます。私はまだ棒のツールチップが同じままで、そのラベルと値を表示するのが好きです。上記のチャートでは

<html> 
    <head> 
    <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> 
    <script type="text/javascript"> 

google.charts.load('current', {packages: ['corechart', 'bar']}); 
google.charts.setOnLoadCallback(drawBasic); 

function drawBasic() { 

     var data = google.visualization.arrayToDataTable([ 
     ['City', '2010 Population',], 
     ['New York City, NY', 8175000], 
     ['Los Angeles, CA', 3792000], 
     ['Chicago, IL', 2695000], 
     ['Houston, TX', 2099000], 
     ['Philadelphia, PA', 1526000] 
     ]); 

     var options = { 
     title: 'Population of Largest U.S. Cities', 
     chartArea: {width: '50%'}, 
     hAxis: { 
      title: 'Total Population', 
      minValue: 0 
     }, 
     vAxis: { 
      title: 'City' 
     } 
     }; 

     var chart = new google.visualization.BarChart(document.getElementById('chart_div')); 

     chart.draw(data, options); 
    } 

    </script> 
    </head> 
    <body> 
<div id="chart_div" style="width: 900px; height: 500px;"></div> 
</body> 
</html> 

あなたはそれの上に置くと、どのように「2010年米国国勢調査から取られたデータ」を言うこと2010年の人口legend要素にツールチップを追加するのでしょうか?

UPDATE

答えを考え出す後、私はあなたが伝説のショー異なる記述の各要素を作ることができる方法を示すためにcodepenを作りました。私はこれが将来誰かを助けることを願っています。

https://codepen.io/jonnyske7ch/pen/bWzmxW

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

 
function drawBasic() { 
 
    var data = google.visualization.arrayToDataTable([ 
 
    ['City', '2010 Population', '2011 Population'], 
 
    ['New York City, NY', 8175000, 3792000], 
 
    ['Los Angeles, CA', 3792000, 1526000], 
 
    ['Chicago, IL', 2695000, 8175000], 
 
    ['Houston, TX', 2099000, 2695000], 
 
    ['Philadelphia, PA', 1526000, 2099000] 
 
    ]); 
 

 
    var options = { 
 
    title: 'Population of Largest U.S. Cities', 
 
    chartArea: {width: '50%'}, 
 
    hAxis: { 
 
     title: 'Total Population', 
 
     minValue: 0 
 
    }, 
 
    vAxis: { 
 
     title: 'City' 
 
    } 
 
    }; 
 

 
    var chart = new google.visualization.BarChart(document.getElementById('chart_div')); 
 
    var legendTooltip = document.getElementById('legend-tooltip'); 
 

 
    // set legend tooltip position 
 
    google.visualization.events.addListener(chart, 'ready', function (gglEvent) { 
 
    var chartLayout = chart.getChartLayoutInterface(); 
 
    var legendBounds = chartLayout.getBoundingBox('legend'); 
 
    legendTooltip.style.top = (legendBounds.top + (legendBounds.height * 2)) + 'px'; 
 
    legendTooltip.style.left = legendBounds.left + 'px'; 
 
    }); 
 

 
    // show legend tooltip 
 
    google.visualization.events.addListener(chart, 'onmouseover', function (gglEvent) { 
 
    if (gglEvent.row === null) { 
 
\t \t \t if (data.getColumnLabel(gglEvent.column) === '2010 Population') { 
 
\t \t \t \t $('#series-name').html(data.getColumnLabel(gglEvent.column) + ' - Data from 2010 Census'); 
 
\t \t \t } else if (data.getColumnLabel(gglEvent.column) === '2011 Population') { 
 
\t \t \t \t $('#series-name').html(data.getColumnLabel(gglEvent.column) + ' - Data from 2011 Census'); 
 
\t \t \t } 
 
     $(legendTooltip).removeClass('hidden'); 
 
    } 
 
    }); 
 

 
    // hide legend tooltip 
 
    google.visualization.events.addListener(chart, 'onmouseout', function (gglEvent) { 
 
    if (gglEvent.row === null) { 
 
     $(legendTooltip).addClass('hidden'); 
 
    } 
 
    }); 
 

 
    chart.draw(data, options); 
 
}
.hidden { 
 
    display: none; 
 
    visibility: hidden; 
 
} 
 

 
.ggl-tooltip { 
 
    background-color: #ffffff; 
 
    border: 1px solid #E0E0E0; 
 
    display: inline-block; 
 
    font-size: 10pt; 
 
    padding: 8px 8px 8px 8px; 
 
    position: absolute; 
 
} 
 

 
.ggl-tooltip div { 
 
    margin-top: 4px; 
 
} 
 

 
.ggl-tooltip span { 
 
    font-weight: bold; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<div id="chart_div"></div> 
 
<div id="legend-tooltip" class="ggl-tooltip hidden"> 
 
    <div id="series-name"></div> 
 
</div>

答えて

1

凡例のための標準的なツールチップが、あなたが自分自身を追加することができます...

は、作業スニペット以下を参照してください、ここで

、私はチャートイベントを使用するonmouseoverおよびonmouseout
は伝説がされているとき

「ホバリング」知っている時にイベントが発生、イベントのrowプロパティがnull、ある場合
そして伝説が推移している

私も配置するgetChartLayoutInterfaceを使用伝説

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

 
function drawBasic() { 
 
    var data = google.visualization.arrayToDataTable([ 
 
    ['City', '2010 Population',], 
 
    ['New York City, NY', 8175000], 
 
    ['Los Angeles, CA', 3792000], 
 
    ['Chicago, IL', 2695000], 
 
    ['Houston, TX', 2099000], 
 
    ['Philadelphia, PA', 1526000] 
 
    ]); 
 

 
    var options = { 
 
    title: 'Population of Largest U.S. Cities', 
 
    chartArea: {width: '50%'}, 
 
    hAxis: { 
 
     title: 'Total Population', 
 
     minValue: 0 
 
    }, 
 
    vAxis: { 
 
     title: 'City' 
 
    } 
 
    }; 
 

 
    var chart = new google.visualization.BarChart(document.getElementById('chart_div')); 
 
    var legendTooltip = document.getElementById('legend-tooltip'); 
 

 
    // set legend tooltip position 
 
    google.visualization.events.addListener(chart, 'ready', function (gglEvent) { 
 
    var chartLayout = chart.getChartLayoutInterface(); 
 
    var legendBounds = chartLayout.getBoundingBox('legend'); 
 
    legendTooltip.style.top = (legendBounds.top + (legendBounds.height * 2)) + 'px'; 
 
    legendTooltip.style.left = legendBounds.left + 'px'; 
 
    }); 
 

 
    // show legend tooltip 
 
    google.visualization.events.addListener(chart, 'onmouseover', function (gglEvent) { 
 
    if (gglEvent.row === null) { 
 
     $('#series-name').html(data.getColumnLabel(gglEvent.column)); 
 
     $(legendTooltip).removeClass('hidden'); 
 
    } 
 
    }); 
 

 
    // hide legend tooltip 
 
    google.visualization.events.addListener(chart, 'onmouseout', function (gglEvent) { 
 
    if (gglEvent.row === null) { 
 
     $(legendTooltip).addClass('hidden'); 
 
    } 
 
    }); 
 

 
    chart.draw(data, options); 
 
}
.hidden { 
 
    display: none; 
 
    visibility: hidden; 
 
} 
 

 
.ggl-tooltip { 
 
    background-color: #ffffff; 
 
    border: 1px solid #E0E0E0; 
 
    display: inline-block; 
 
    font-size: 10pt; 
 
    padding: 8px 8px 8px 8px; 
 
    position: absolute; 
 
} 
 

 
.ggl-tooltip div { 
 
    margin-top: 4px; 
 
} 
 

 
.ggl-tooltip span { 
 
    font-weight: bold; 
 
}
<script src="https://www.gstatic.com/charts/loader.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
<div id="chart_div"></div> 
 
<div id="legend-tooltip" class="ggl-tooltip hidden"> 
 
    <div><span>Series Info</span></div> 
 
    <div id="series-name"></div> 
 
</div>

近くのツールチップ
関連する問題