2012-03-12 17 views
118

Usuń wyściółkę lub marże od 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>

Example fiddle

Jak zdjąć obicie lub marginesy w tym przykładzie?

+0

jeśli ktokolwiek chce to uzasadnić, ponieważ masz pomiary po lewej stronie wykresu liniowego, 'chartArea: {width: '70% ', left: '30%'}' zrobiłem dla mnie sztuczkę. Źródło: https://code.google.com/p/google-visualization-api-issues/issues/detail?id=857#c5 – IsmailS

Odpowiedz

203

Dodając i dostosowując niektóre opcje konfiguracji wymienione w API documentation, można utworzyć wiele różnych stylów. Na przykład, here is a version który usuwa większość dodatkowej pustej przestrzeni przez ustawienie chartArea.width do 100% i chartArea.height do 80% i przesuwając legend.position do dolny:

// 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'} 
    }; 

Jeśli chcesz dostroić go więcej, spróbuj zmienić te wartości lub użyj innych właściwości z powyższego linku.

55

Jestem dość późno, ale każdy użytkownik szukający tego może uzyskać pomoc. Wewnątrz opcji możesz podać nowy parametr o nazwie chartArea.

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

Opcje lewy i górny określają wielkość wypełnienia od lewej do góry. Mam nadzieję, że to pomoże.

+0

the chartArea.top zrobił lewę dla mojego div wielkości dynamicznej. Dzięki. – Blamkin86

11

Istnieje taka możliwość like Aman Virk mentioned:

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

Należy jednak pamiętać, że wyściółka i margines nie są tam przeszkadza. Jeśli masz możliwość przełączania się między różnymi typami wykresów, na przykład ColumnChart i ten z pionowymi kolumnami, potrzebujesz trochę marginesu na wyświetlanie etykiet tych linii.

Jeśli usuniesz ten margines, skończy się pokazywanie tylko części etykiet lub brak etykiet.

Jeśli masz tylko jeden typ wykresu, możesz zmienić margines i wypełnienie, tak jak powiedział Arman. Ale jeśli można to zmienić, nie zmieniaj ich.

36

Przybyłem tutaj jak większość ludzi z tym samym problemem i zostawiłem zszokowany, że żadna odpowiedź nawet nie działa.

Dla wszystkich zainteresowanych, tutaj jest rzeczywista rozwiązanie:

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

Kluczem tutaj jest nic do czynienia z „lewy” lub „top” wartości. Ale raczej, że:

Wymiary zarówno wykresu i wykresu strefy są ustawione i ustawić na taką samą wartość

jako poprawka do mojej odpowiedzi. Powyższe rozwiązanie rzeczywiście rozwiąże "nadmierny" problem padding/margin/whitespace.Jeśli jednak chcesz, aby zawierały etykiety osi i/lub legendę, musisz zmniejszyć szerokość obszaru mapy o około &, więc coś nieco poniżej zewnętrznej szerokości/wysokości. Spowoduje to "przekazanie" interfejsu API wykresu, że istnieje wystarczająca przestrzeń do wyświetlenia tych właściwości. W przeciwnym razie z przyjemnością je wykluczy.

+5

To jest poprawna odpowiedź .... –

+2

Jako poprawka do mojej odpowiedzi. To rzeczywiście rozwiąże "nadmierny" problem padding/margin/whitespace. Jeśli jednak chcesz dołączyć etykiety osi i/lub legendę, musisz zmniejszyć wysokość i szerokość obszaru wykresu, aby coś znajdowało się nieco poniżej zewnętrznej szerokości/wysokości. Spowoduje to "przekazanie" interfejsu API wykresu, że istnieje wystarczająca przestrzeń do wyświetlenia tych właściwości. W przeciwnym razie z przyjemnością je wykluczy. – pimbrouwers

+0

Myślę, że powodem, dla którego inne rozwiązania nie działały dla ciebie, jest prawdopodobnie to, że zakładali, że wykres został wstawiony do DIV, który ma już ustawione atrybuty szerokości i wysokości, ale tego nie zrobiłeś. Dobrym pomysłem jest ustawienie wysokości i szerokości w kodzie HTML, aby układ strony nie zmienił się po wypełnieniu wykresu. To zapobiegnie "przeskakiwaniu" rzeczy na stronie podczas ładowania. –

10

Brakuje w docs (używam wersji 43), ale rzeczywiście można korzystać z dolną właściwość obszaru wykresu prawo i :

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

Więc to jest możliwe wykorzystanie pełnego responsywna szerokość & wysokość i zapobiega przycinaniu etykiet osi lub legend.

+0

Możliwość korzystania z prawa jest zdecydowanie miłym dodatkiem, jednak w przypadku wykresu kolumnowego, który wymaga liczb dla osi pionowej, będzie to trudne, gdy wartości będą się zmieniać o dobry bit - na przykład wykres z wartościami od 0 - 100 wymagałoby lewej wartości 20 pikseli, ale 0 - 10 mil potrzebowałoby 100 pikseli, a użycie 100 pikseli pozostawiłoby dość duży margines, który jest tym, co myślę, że wszyscy próbujemy się pozbyć :) Chyba że to opcja, która pozwala wykresowi dostosować swoją własną szerokość, której mi brakuje. Wszelkie przemyślenia na temat tego, jak można to rozwiązać? – user3800174

+0

Wygląda na to, że zostały udokumentowane 2 października 2015 r. Tutaj: http://archive.is/lwbQY#selection-2997.0-3011.1 –

Powiązane problemy