ลบการขยายหรือระยะขอบออกจาก Google Charts


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>

ตัวอย่างซอ

ฉันจะลบการขยายหรือระยะขอบในตัวอย่างนี้ได้อย่างไร


ถ้าใครต้องการที่จะแสดงให้เห็นถึงขวาเพราะคุณมีวัดอยู่ทางซ้ายมือของแผนภูมิเส้นchartArea: {width: '70%', left: '30%'}ได้เคล็ดลับสำหรับฉัน ที่มา: code.google.com/p/google-visualization-api-issues/issues/…
IsmailS

คำตอบ:


246

ด้วยการเพิ่มและปรับแต่งตัวเลือกการกำหนดค่าบางอย่างที่แสดงในเอกสาร APIคุณสามารถสร้างสไตล์ที่แตกต่างได้มากมาย ยกตัวอย่างเช่นที่นี่เป็นรุ่นที่เอาส่วนใหญ่ของพื้นที่ว่างพิเศษโดยการตั้งค่าchartArea.widthไปยัง100%และchartArea.heightจะ80%และย้ายlegend.positionไปยังด้านล่าง :

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

หากคุณต้องการปรับแต่งเพิ่มเติมลองเปลี่ยนค่าเหล่านี้หรือใช้คุณสมบัติอื่นจากลิงค์ด้านบน


78

ฉันค่อนข้างช้า แต่ผู้ใช้ที่ค้นหาสิ่งนี้สามารถขอความช่วยเหลือได้ ภายในตัวเลือกที่คุณสามารถส่งผ่านพารามิเตอร์ใหม่ที่เรียกว่าchartArea

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

ตัวเลือกด้านซ้ายและด้านบนจะกำหนดปริมาณของช่องว่างภายในจากซ้ายและด้านบน หวังว่าจะช่วยได้


chartArea.top ทำเคล็ดลับสำหรับ div ที่มีขนาดแบบไดนามิกของฉัน ขอบคุณ
Blamkin86

60

ฉันมาถึงที่นี่เหมือนคนส่วนใหญ่ที่มีปัญหาเดียวกันนี้และเหลือตกใจว่าไม่มีคำตอบแม้แต่ทำงานจากระยะไกล

สำหรับผู้ที่สนใจนี่คือทางออกที่แท้จริง:

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

กุญแจที่นี่ไม่มีส่วนเกี่ยวข้องกับค่า "ซ้าย" หรือ "บนสุด" แต่ค่อนข้างที่:

ขนาดของแผนภูมิและพื้นที่แผนภูมิคือ SET และตั้งค่าเป็น SAME VALUE

เป็นการแก้ไขคำตอบของฉัน ข้างต้นแน่นอนจะแก้ปัญหาช่องว่างภายใน "มากเกินไป" / ขอบ / ช่องว่าง อย่างไรก็ตามหากคุณต้องการรวมป้ายชื่อแกนและ / หรือคำอธิบายแผนภูมิคุณจะต้องลดความสูง & ความกว้างของพื้นที่แผนภูมิดังนั้นบางอย่างที่ต่ำกว่าความกว้าง / ความสูงด้านนอกเล็กน้อย สิ่งนี้จะ "บอก" แผนภูมิ API ว่ามีห้องเพียงพอที่จะแสดงคุณสมบัติเหล่านี้ มิฉะนั้นจะแยกพวกเขาอย่างมีความสุข


2
เป็นการแก้ไขคำตอบของฉัน วิธีนี้จะช่วยแก้ปัญหาช่องว่างภายใน / ช่องว่าง / ช่องว่าง / ช่องว่าง "มากเกินไป" ได้ อย่างไรก็ตามหากคุณต้องการรวมป้ายชื่อแกนและ / หรือคำอธิบายแผนภูมิคุณจะต้องลดความสูง & ความกว้างของพื้นที่แผนภูมิดังนั้นบางอย่างที่ต่ำกว่าความกว้าง / ความสูงด้านนอกเล็กน้อย สิ่งนี้จะ "บอก" แผนภูมิ API ว่ามีห้องเพียงพอที่จะแสดงคุณสมบัติเหล่านี้ มิฉะนั้นจะแยกพวกเขาอย่างมีความสุข
pimbrouwers

1
ฉันคิดว่าเหตุผลที่โซลูชันอื่นไม่ได้ผลสำหรับคุณอาจเป็นเพราะพวกเขาคิดว่าแผนภูมิถูกแทรกลงใน DIV ซึ่งมีแอตทริบิวต์ความกว้างและความสูงที่กำหนดไว้แล้ว แต่คุณไม่ได้ทำเช่นนั้น เป็นความคิดที่ดีที่จะกำหนดความสูงและความกว้างใน HTML ไว้ล่วงหน้าเพื่อให้เค้าโครงของหน้าไม่เปลี่ยนแปลงเมื่อกราฟเต็ม ที่จะป้องกันไม่ให้สิ่งต่าง ๆ "กระโดดไปมา" ในหน้าขณะที่โหลด
Dave Burton

@ ขอขอบคุณสำหรับคำแนะนำ แต่ฉันไม่เห็นด้วย มีสถานการณ์มากมายที่คุณเพิ่งไม่รู้ว่าค่าเหล่านั้นจะเป็นอย่างไร และดูเหมือนว่าอย่างน้อย 15 คนรู้สึกว่าการเสนอของฉันนั้นเพียงพอแล้ว
pimbrouwers

1
ฉันเห็นด้วย Pim เมื่อคุณไม่ทราบความกว้างและ / หรือความสูงล่วงหน้า (อาจเป็นเพราะคุณต้องการให้หน้าปรับเปลี่ยนตามความต้องการ) คุณจะไม่สามารถกำหนดความกว้างและความสูงล่วงหน้าใน DIV ได้ ฉันแค่ชี้ให้เห็นว่าทำไมฉันจึงคิดว่าวิธีแก้ปัญหาที่ให้ไว้ในคำตอบอื่น ๆ นั้นใช้ได้ผลสำหรับพวกเขา แต่ไม่ได้ผลสำหรับคุณและทำไมจึงเป็นความคิดที่ดีที่จะกำหนดความกว้างและความสูงไว้ใน DIV
Dave Burton

1
ด้วยเหตุผล @DaveBurton ชี้ให้เห็นว่านี่อาจเป็นคำตอบที่ถูกต้องหากทำงานกับ CSS Grid (ซึ่งฉัน)
สตีเฟ่น R

14

มันหายไปในเอกสาร (ฉันใช้รุ่น 43) แต่คุณสามารถใช้คุณสมบัติด้านขวาและด้านล่างของพื้นที่แผนภูมิ:

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

ดังนั้นจึงเป็นไปได้ที่จะใช้ความกว้างและความสูงที่ตอบสนองได้เต็มที่และป้องกันไม่ให้เลเบลของแกนหรือตำนานถูกครอบตัด


ความสามารถในการใช้งานที่ถูกต้องเป็นการเพิ่มที่ดีอย่างแน่นอนอย่างไรก็ตามในกรณีของแผนภูมิคอลัมน์ที่ต้องการตัวเลขสำหรับแกนแนวตั้งนั้นจะยุ่งยากหากค่ามีความผันผวนโดยบิตที่ดี - เช่นแผนภูมิที่มีค่าอยู่ในช่วงตั้งแต่ 0 - 100 จะต้องมีค่าด้านซ้าย 20 พิกเซล แต่ 0 - 10 ล้านจะต้องมี 100 พิกเซลและใช้ 100 พิกเซลจากนั้นจะเหลือระยะขอบที่ค่อนข้างใหญ่ซึ่งเป็นสิ่งที่ฉันคิดว่าเราทุกคนพยายามที่จะกำจัด :) เว้นแต่จะมี ตัวเลือกที่ช่วยให้แผนภูมิปรับความกว้างของตัวเองที่ฉันหายไป ความคิดใด ๆ เกี่ยวกับวิธีการหนึ่งที่สามารถแก้ปัญหานี้ได้?
user3800174

ดูเหมือนว่าพวกเขาจะบันทึกไว้ 2 ต.ค. 2558 ที่นี่: archive.is/lwbQY#selection-2997.0-3011.1
Dave Burton

13

มีความเป็นไปได้เช่นนี้ที่Aman Virk พูดถึง :

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

แต่โปรดจำไว้ว่าช่องว่างภายในและขอบไม่ได้รบกวนคุณ หากคุณมีความเป็นไปได้ที่จะสลับระหว่างชาร์ตประเภทต่าง ๆ เช่น ColumnChart และชาร์ตที่มีคอลัมน์แนวตั้งคุณจะต้องมีระยะขอบในการแสดงเลเบลของเส้นเหล่านั้น

หากคุณนำส่วนต่างนั้นไปทิ้งคุณจะพบว่ามีเพียงส่วนหนึ่งของป้ายกำกับหรือไม่มีป้ายกำกับเลย

ดังนั้นถ้าคุณมีแผนภูมิเพียงประเภทเดียวคุณก็สามารถเปลี่ยนระยะขอบและระยะห่างได้ตามที่ Arman กล่าว แต่ถ้าเป็นไปได้ที่จะเปลี่ยนไม่เปลี่ยน


11

มีชุดรูปแบบเฉพาะสำหรับสิ่งนี้

options: {
  theme: 'maximized'
}

จากเอกสารแผนภูมิของ Google:

ปัจจุบันมีเพียงหนึ่งธีมเท่านั้นที่มีให้:

'ขยายให้ใหญ่สุด' - ขยายพื้นที่ของแผนภูมิให้กว้างที่สุดและดึงเลเจนด์และเลเบลทั้งหมดภายในพื้นที่แผนภูมิ ตั้งค่าตัวเลือกต่อไปนี้:

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

ดูเหมือนว่าตัวเลือกที่ดีที่สุด หลังจากตั้งค่าธีม: 'ขยายใหญ่สุด' ยังคงเป็นไปได้ที่จะปรับแต่งลักษณะที่ปรากฏเช่นความสูง: '90%', ตำแหน่งข้อความ: 'ออก' ฯลฯ
Jiri Kriz
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.