Utilisation du graphique de zone Google: http://code.google.com/apis/chart/interactive/docs/gallery/areachart.html
Est-ce que quelqu'un sait comment je peux librement manipuler les légendes?
Je veux à peu près l'un des deux:
J'éviterais les hacks pour manipuler le svg dans l'iframe btw.
Il n'y a aucun moyen de manipuler les légendes comme nous le souhaitons. Dans la question de la prime: vous pouvez utiliser
dans deux des graphiques
legend : 'none'
et utilisez également des couleurs pour garantir que tous les éléments ont la même couleur.
colors:['red','#004411']
A part cela, nous ne pouvons malheureusement pas les manipuler beaucoup plus :(
Pour un contrôle complet , je suggère de les désactiver
legend : { position:"none"}
Création de votre propre légende totalement personnalisée en dehors du graphique avec html.
Ensuite, liez votre légende personnalisée au graphique à l'aide de l'événement de sélection, combiné avec des événements de clic ou de survol/focus (ce que vous voulez) sur votre légende personnalisée.
voir https://code.google.com/apis/ajax/playground/?type=visualization#interaction_using_events pour commencer.
Vous pouvez simplement manipuler le code suivant pour la personnalisation de vos légendes:
var options = {
title: '',
pieHole: 0.4,
colors: ['#0590FB', '#1DE6A2', '#FEB11C', '#FF4863', '#5A479C'],
legend : { position:"right", alignment:"center"},
chartArea: {
left: 10,
top: 10,
width: '130%',
height: '65%'
},
tooltip: {
trigger:'none'
}
Peut-être quelque chose comme ça (cela dépend de la police que vous utilisez, vous devez récupérer la proportion de votre police)
var my_legend = "this is my legend x";
var len_legend = my_legend.length;
var width_graph = 400;
var chars_per_line = width_graph / [REPLACE_BY_PROPORTION]
if (len_legend > chars_per_line) {
my_legend = wordwrap(my_legend, 20, '<br/>\n');
}
ET LA FONCTION WRAP Word (ou quelque chose comme ça)
function wordwrap( str, width, brk, cut ) {
brk = brk || '\n';
width = width || 75;
cut = cut || false;
if (!str) { return str; }
var regex = '.{1,' +width+ '}(\\s|$)' + (cut ? '|.{' +width+ '}|.+$' : '|\\S+?(\\s|$)');
return str.match( RegExp(regex, 'g') ).join( brk );
}
SO POUR votre code ...
remplacer les valeurs à
var chart = new google.visualization.AreaChart(document....
etc
par vos vars.
ne pas utiliser width = 400
, utilisez la largeur, etc. ... et votre chaîne.
Je recherche une solution plus intelligente que la mienne, j'ai donc vu cette question.
Ma solution actuelle consiste à trouver un élément html qui contient une légende et à manipuler avec eux comme vous le feriez avec votre propre élément html personnalisé. (Vous devrez cependant vous occuper des elems SVG ici)
document.getElementById('pie-chart').getElementsByTagName('g')[0].setAttribute("style", "transform: translate(-130px)");