175 votes

Supprimer le rembourrage ou les marges de Google Charts

// Load the Visualization API and the piechart package.
google.load('visualization', '1.0', {'packages':['corechart']});

// Set a callback to run when the Google Visualization API is loaded.
google.setOnLoadCallback(drawChart);

// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {

  // Create the data table.
  var data = new google.visualization.DataTable();
  data.addColumn('string', 'Topping');
  data.addColumn('number', 'Slices');

  var myData = {
    'Mushrooms': 3,
    'Onions': 1,
    'Olives': 1,
    'Zucchini': 1,
    'Pepperoni': 2
  };

  var rows = [];
  for (element in myData) {
      rows.push([element + " (" + myData[element] + ")", myData[element]])
  }
  data.addRows(rows);

  // Set chart options
  var options = {'title':'How Much Pizza I Ate Last Night',
                 'width':450,
                 'height':300};

  // Instantiate and draw our chart, passing in some options.
  var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
  chart.draw(data, options);
}

<script type="text/javascript" src="https://www.google.com/jsapi"></script>

<div id="chart_div"></div>

Exemple de violon

Comment supprimer le rembourrage ou les marges dans cet exemple ?

1 votes

Si quelqu'un veut justifier à droite parce que vous avez des mesures à gauche du graphique linéaire, chartArea: {width: '70%', left: '30%'} a fait l'affaire pour moi. Source : code.google.com/p/google-visualization-api-issues/issues/

280voto

Slace Diamond Points 1874

En ajoutant et en ajustant certaines options de configuration répertoriées dans la section Documentation de l'API vous pouvez créer de nombreux styles différents. Par exemple, voici une version qui supprime la plupart des espaces vides supplémentaires en définissant l'option chartArea.width à 100% et chartArea.height à 80% et de déplacer le legend.position à fond :

// Set chart options
var options = {'title': 'How Much Pizza I Ate Last Night',
               'width': 350,
               'height': 400,
               'chartArea': {'width': '100%', 'height': '80%'},
               'legend': {'position': 'bottom'}
    };

Si vous souhaitez l'affiner davantage, essayez de modifier ces valeurs ou d'utiliser d'autres propriétés du lien ci-dessus.

96voto

Aman Virk Points 1253

J'arrive un peu tard, mais n'importe quel utilisateur qui cherche cela peut y trouver de l'aide. Dans les options, vous pouvez passer un nouveau paramètre appelé chartArea .

        var options = {
        chartArea:{left:10,top:20,width:"100%",height:"100%"}
    };

Les options Left et Top définissent la quantité de rembourrage à partir de la gauche et du haut. J'espère que cela vous aidera.

0 votes

Le chartArea.top a fait l'affaire pour mon div à taille dynamique. Merci.

72voto

pimbrouwers Points 5499

Je suis arrivé ici comme la plupart des gens avec le même problème, et je suis reparti choqué qu'aucune des réponses ne fonctionne, même de loin.

Pour ceux que cela intéresse, voici la solution réelle :

... //rest of options
width: '100%',
height: '350',
chartArea:{
    left:5,
    top: 20,
    width: '100%',
    height: '350',
}
... //rest of options

La clé ici a rien à faire avec les valeurs "left" ou "top". Mais plutôt que le :

Les dimensions des deux graphique et zone de carte sont réglés et fixés à la MÊME VALEUR

Comme amendement à ma réponse. Ce qui précède résoudra effectivement le problème de l'espacement, de la marge et du blanc "excessifs". Cependant, si vous souhaitez inclure des étiquettes d'axes et/ou une légende vous devrez réduire la hauteur et la largeur de la zone du graphique pour qu'elles soient légèrement inférieures à la largeur/hauteur extérieure. Cela permettra de "dire" à l'API graphique qu'il y a suffisamment de place pour afficher ces propriétés. Dans le cas contraire, elle se contentera de les exclure.

2 votes

Comme amendement à ma réponse. Cela résoudra en effet le problème du padding/margin/whitespace "excessif". Cependant, si vous souhaitez inclure des étiquettes d'axes et/ou une légende, vous devrez réduire la hauteur et la largeur de la zone du graphique pour qu'elles soient légèrement inférieures à la largeur/hauteur extérieure. Cela permettra de "dire" à l'API graphique qu'il y a suffisamment de place pour afficher ces propriétés. Dans le cas contraire, elle se contentera de les exclure.

1 votes

Je pense que la raison pour laquelle les autres solutions n'ont pas fonctionné pour vous est probablement qu'elles supposaient que le graphique était inséré dans un DIV qui avait déjà des attributs de largeur et de hauteur prédéfinis, mais vous ne l'aviez pas fait. C'est une bonne idée de prédéfinir la hauteur et la largeur dans le HTML afin que la disposition de la page ne change pas lorsque le graphique est rempli. Cela empêchera les choses de "sauter" sur la page pendant son chargement.

1 votes

@Dave merci pour la suggestion, mais je ne suis pas nécessairement d'accord. Il existe de nombreuses situations où vous ne savez tout simplement pas quelles seront ces valeurs. Et il semble qu'au moins 15 autres personnes pensent que mon offre est adéquate.

21voto

Rob Points 392

C'est absent de la documentation (j'utilise la version 43), mais vous pouvez en fait utiliser la fonction droite et fond de la zone du graphique :

var options = {
  chartArea:{
    left:10,
    right:10, // !!! works !!!
    bottom:20,  // !!! works !!!
    top:20,
    width:"100%",
    height:"100%"
  }
};

Il est donc possible d'utiliser une largeur et une hauteur optimales tout en évitant que les étiquettes ou les légendes des axes ne soient rognées.

0 votes

Cependant, dans le cas d'un graphique à colonnes qui nécessite des chiffres pour l'axe vertical, cela devient délicat lorsque les valeurs fluctuent de manière importante. Par exemple, un graphique dont les valeurs vont de 0 à 100 nécessiterait une valeur de gauche de 20 pixels, mais de 0 à 10 mil nécessiterait 100 pixels.) À moins qu'il n'y ait une option permettant au graphique d'ajuster sa propre largeur qui me manque. Avez-vous une idée de la façon dont on pourrait résoudre ce problème ?

0 votes

Il semble qu'ils l'aient documenté le 2 octobre 2015, ici : archive.is/lwbQY#selection-2997.0-3011.1

19voto

Ludo DD Points 121

Il existe un thème disponible spécifiquement pour cela

options: {
  theme: 'maximized'
}

à partir des documents de la carte Google :

Actuellement, un seul thème est disponible :

maximized' - Maximise la zone du graphique et dessine la légende et toutes les étiquettes à l'intérieur de la zone du graphique. Définit les options suivantes :

chartArea: {width: '100%', height: '100%'},
legend: {position: 'in'},
titlePosition: 'in', axisTitlesPosition: 'in',
hAxis: {textPosition: 'in'}, vAxis: {textPosition: 'in'}

0 votes

Cela semble être la meilleure option. Après avoir défini le thème : 'maximized', il est toujours possible de régler l'apparence, par exemple height:' 90%', textPosition : 'out', etc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X