Dolguları veya kenar boşluklarını Google Charts'tan kaldırın


151

// 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>

Örnek keman

Bu örnekte dolgu veya kenar boşluklarını nasıl kaldırabilirim?


eğer herhangi biri sağa yaslamak istiyorsa, çünkü çizgi grafiğin solunda ölçümleriniz var, chartArea: {width: '70%', left: '30%'}benim için hile yaptı. Kaynak: code.google.com/p/google-visualization-api-issues/issues/…
IsmailS

Yanıtlar:


246

API belgelerinde listelenen bazı yapılandırma seçeneklerini ekleyerek ve ayarlayarak birçok farklı stil oluşturabilirsiniz. Örneğin, burada bir sürümüdür olduğunu belirleyerek en fazladan boş alan kaldırır chartArea.widthiçin % 100 ve chartArea.heightiçin % 80 ve hareketli legend.positioniçin alt :

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

Daha fazla ayarlamak istiyorsanız, bu değerleri değiştirmeyi veya yukarıdaki bağlantıdan diğer özellikleri kullanmayı deneyin.


78

Oldukça geç kaldım ama bunu arayan herhangi bir kullanıcı yardım alabilir. Seçeneklerin içinde chartArea adlı yeni bir parametre iletebilirsiniz .

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

Sol ve üst seçenekler soldan ve üstten dolgu miktarını tanımlar. Umarım bu yardımcı olur.


chartArea.top benim dinamik boyutlu div için hile yaptı. Teşekkürler.
Blamkin86

60

Bu sorun ile çoğu insan gibi buraya geldi ve hiçbir cevap uzaktan bile çalıştı şok bıraktı.

İlgilenen herkes için asıl çözüm:

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

Buradaki anahtarın "sol" veya "üst" değerlerle ilgisi yoktur. Ama bunun yerine:

Her iki boyutları grafik ve grafik-alana aynı değere ayarlanır ve kümesidir

Cevabımda bir değişiklik olarak. Yukarıdakiler gerçekten de "aşırı" dolgu / marj / boşluk sorununu çözecektir. Bununla birlikte, eksen etiketleri ve / veya bir gösterge eklemek istiyorsanız, grafik alanının yüksekliğini ve genişliğini, dış genişliğin / yüksekliğin biraz altında bir şekilde azaltmanız gerekir. Bu, grafik API'sine bu özellikleri görüntülemek için yeterli alan olduğunu "söyleyecektir". Aksi takdirde onları mutlu bir şekilde hariç tutacaktır.


2
Cevabımda bir değişiklik olarak. Bu gerçekten de "aşırı" dolgu / marj / boşluk sorununu çözecektir. Bununla birlikte, eksen etiketleri ve / veya bir gösterge eklemek isterseniz, grafik alanının yüksekliğini ve genişliğini, dış genişliğin / yüksekliğin biraz altında bir şekilde azaltmanız gerekir. Bu, grafik API'sine bu özellikleri görüntülemek için yeterli alan olduğunu "söyleyecektir". Aksi takdirde onları mutlu bir şekilde dışlar.
pimbrouwers

1
Diğer çözümlerin sizin için işe yaramadığını düşünüyorum, muhtemelen grafiğin önceden belirlenmiş genişlik ve yükseklik özelliklerine sahip bir DIV'ye eklendiğini varsayıyorlardı, ancak bunu yapmamıştınız. HTML'deki yüksekliği ve genişliği önceden ayarlamak iyi bir fikirdir, böylece grafik dolduğunda sayfanın düzeni değişmez. Bu, şeylerin yüklendikçe sayfada "gezinmesini" önler.
Dave Burton

@ Öneri için teşekkürler, ama kesinlikle katılmıyorum. Bu değerlerin ne olacağını bilmediğiniz birçok durum vardır. Ve en az 15 kişi teklifim yeterliymiş gibi hissediyor.
16:23 de pimbrouwers

1
Katılıyorum, Pim. Genişliği ve / veya yüksekliği önceden bilmiyorsanız (belki de sayfanın uyumlu bir şekilde uyarlanmasını istediğiniz için), DIV'deki genişliği ve yüksekliği önceden ayarlayamazsınız. Diğer cevaplarda verilen çözümlerin neden onlar için işe yaradığını düşündüğümü ama sizin için işe yaramadığını ve mümkünse DIV'deki genişlik ve yüksekliği önceden ayarlamanın neden iyi bir fikir olduğunu belirtiyordum.
Dave Burton

1
@DaveBurton'un işaret ettiği nedenlerden ötürü, CSS Izgarasıyla (ki ben) çalışıyorsanız bu muhtemelen doğru cevaptır
Stephen R

14

Belgelerde eksik (sürüm 43 kullanıyorum), ancak aslında grafik alanının sağ ve alt özelliğini kullanabilirsiniz :

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

Bu nedenle, tam duyarlı genişlik ve yükseklik kullanmak ve eksen etiketlerinin veya açıklamaların kırpılmasını önlemek mümkündür.


Doğru kullanabilmek kesinlikle güzel bir ektir, ancak dikey eksen için sayı gerektiren bir sütun grafiği söz konusu olduğunda, değerler iyi bir şekilde dalgalandığında (örneğin, 0 - 100, 20 piksellik bir sol değer gerektirir, ancak 0 - 10 mil 100 piksele ihtiyaç duyar ve 100 piksel kullanıldığında, hepimizden kurtulmaya çalıştığımı düşündüğüm şey oldukça büyük bir kenar boşluğu bırakacaktı :) grafiğin eksik olduğum kendi genişliğini ayarlamasına izin veren bir seçenek. Birinin bunu nasıl çözebileceği hakkında herhangi bir düşünceniz var mı?
user3800174

Belgeleri 2 Ekim 2015'te belgelemiş gibi görünüyorlar: archive.is/lwbQY#selection-2997.0-3011.1
Dave Burton

13

Aman Virk gibi bu olasılık var :

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

Ancak, dolgu ve kenar boşluğunun sizi rahatsız etmek için orada olmadığını unutmayın. Bir ColumnChart ve dikey sütunları olan grafikler gibi farklı grafik türleri arasında geçiş yapma olanağınız varsa, bu satırların etiketlerini görüntülemek için biraz kenar boşluğuna ihtiyacınız vardır.

Bu kenar boşluğunu alırsanız, etiketlerin yalnızca bir kısmını gösterir veya hiç etiket göstermezsiniz.

Yani sadece bir grafik türünüz varsa, o zaman Arman'ın dediği gibi kenar boşluğunu ve dolguyu değiştirebilirsiniz. Ancak geçiş yapmak mümkünse bunları değiştirmeyin.


11

Bunun için özel olarak kullanılabilecek bir tema var

options: {
  theme: 'maximized'
}

Google grafik belgelerinden:

Şu anda yalnızca bir tema mevcut:

'maksimize' - Grafiğin alanını en üst düzeye çıkarır ve açıklamaları ve tüm etiketleri grafik alanı içine çizer. Aşağıdaki seçenekleri ayarlar:

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

Bu en iyi seçenek gibi görünüyor. Temayı ayarladıktan sonra: 'ekranı kapladı', görünümü ayarlamak hala mümkündür, örneğin yükseklik: '% 90', textPosition: 'out', vb.
Jiri Kriz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.