Я основывая этот ответ на решение, которое я нашел здесь: 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;
}
Поскольку вы не могли 't получить ваш код в скрипке, это непроверено, но оно должно получить вас 99% пути там.
Если вы можете предоставить ([репрезентативной/минимальное] (http://sscce.org/)) [демо] (HTTP: // jsfiddle .net /), мы, вероятно, сможем вам помочь. Кстати, размещайте здесь репрезентативный код * здесь *, ставьте вопрос как можно более самодостаточным, чтобы сохранить его использование для будущих посетителей. –
@DavidThomas Я не был уверен, как разрешить загрузку файла данных XML с помощью JSFiddle, поэтому я просто нажал его здесь: http://colorfulengineering.org/test.html Обратите внимание, что эта версия имеет события mouseover, но даже без них, в любое время, когда мышь нависает над легендой, он падает. – user
У меня нет ошибок или сбоев, Chrome v21 Ubuntu. – dennmat