我将这个答案基于我在这里找到的解决方案:http: //jsfiddle.net/asgallant/6Y8jF/2/
要点是隐藏 Google 的传奇并建立自己的传奇。legend: {position: 'none'}
首先,通过作为选项之一传入来禁用内置图例chart.draw
。
在addDiv
为图表创建持有者 div 的函数中,添加第二个元素来保存图例。
function addDiv(parent_id, div_id) {
$("#" + parent_id).append('<div id="' + div_id + '" class="chart-chart"></div><ul id="legend_' + div_id + '" class="chart-legend"></ul>');
}
然后,在您的drawChart
函数中,构建图例:
function drawChart(chart, original_table,
x_attr, y_attr, x_axis_lbl, y_axis_lbl, x_min_max,
div_id) { //pass div_id to this function to be able to get legend element
var google_table = allSeriesToGoogleTable(original_table,
x_attr, y_attr, ranking_titles);
var colors = ["#3366cc","#dc3912","#ff9900"]; //use whatever colors you like
var options = {'chartArea':{width:"60%"},
vAxis: {'title': y_axis_lbl}, 'hAxis': {'title': x_axis_lbl},
'interpolateNulls':true,
colors: colors, //use the same colors for the chart and the legend
legend: {position: 'none'} //hide default legend
};
var legend = $('#legend_' + div_id);
for (var i = 1; i < ranking_titles.length; i++) {
var li = $('<li></li>'),
marker = $('<div class="legendMarker"></div>'),
explanation = $('<span></span>');
explanation.text(ranking_titles[i]); // legend marker text
marker.css( {backgroundColor: colors[i-1]} ); //marker color
li.append(marker).append(explanation);
legend.append(li);
}
if ( ! x_min_max === undefined )
//do something
chart.draw( google_table, options );
// add the data table to the chart
chart.google_table = google_table;
}
当然,请确保您也包含小提琴中的 CSS:
.chart-chart {
float: left;
}
.chart-legend {
margin: 30px 0 0 0;
float: left;
list-style: none;
}
div.legendMarker {
height: 1em;
width: 1em;
display: inline-block;
margin: 0 5px 0 0;
}
由于您无法将代码放入小提琴中,因此未经测试,但它应该可以让您完成 99% 的工作。