Xóa phần đệm hoặc lề khỏi Biểu đồ của Google


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>

Ví dụ

Làm cách nào để loại bỏ phần đệm hoặc lề trong ví dụ này?


nếu bất cứ ai muốn chứng minh đúng vì bạn có số đo ở bên trái của biểu đồ đường, hãy chartArea: {width: '70%', left: '30%'}thực hiện mẹo cho tôi. Nguồn: code.google.com/p/google-visualization-api-issues/issues/,
IsmailS

Câu trả lời:


246

Bằng cách thêm và điều chỉnh một số tùy chọn cấu hình được liệt kê trong tài liệu API , bạn có thể tạo rất nhiều kiểu khác nhau. Ví dụ, đây là một phiên bản mà loại bỏ hầu hết các không gian trống thêm bằng cách thiết lập chartArea.widthđể 100%chartArea.heightđến 80% và di chuyển legend.positionđến phía dưới :

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

Nếu bạn muốn điều chỉnh nó nhiều hơn, hãy thử thay đổi các giá trị này hoặc sử dụng các thuộc tính khác từ liên kết ở trên.


78

Tôi khá muộn nhưng bất kỳ người dùng nào đang tìm kiếm điều này đều có thể nhận được sự giúp đỡ từ nó. Bên trong các tùy chọn, bạn có thể truyền một tham số mới gọi là chartArea .

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

Tùy chọn bên trái và trên cùng sẽ xác định số lượng phần đệm từ bên trái và trên cùng. Hy vọng điều này sẽ giúp.


chartArea.top đã thực hiện thủ thuật cho div có kích thước động của tôi. Cảm ơn.
Blamkin86

60

Tôi đến đây giống như hầu hết những người có cùng vấn đề này, và bị sốc khi không có câu trả lời nào thậm chí hoạt động từ xa.

Đối với bất cứ ai quan tâm, đây là giải pháp thực tế:

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

Khóa ở đây không liên quan gì đến các giá trị "bên trái" hoặc "trên cùng". Nhưng đúng hơn là:

Kích thước của cả biểu đồkhu vực biểu đồ được THIẾT LẬP và được đặt thành GIÁ TRỊ CÙNG

Như một sửa đổi cho câu trả lời của tôi. Ở trên thực sự sẽ giải quyết vấn đề "quá mức" phần đệm / lề / khoảng trắng. Tuy nhiên, nếu bạn muốn bao gồm các nhãn trục và / hoặc chú giải, bạn sẽ cần giảm chiều cao và chiều rộng của khu vực biểu đồ để một cái gì đó hơi thấp hơn chiều rộng / chiều cao bên ngoài. Điều này sẽ "cho" API biểu đồ biết có đủ chỗ để hiển thị các thuộc tính này. Nếu không nó sẽ vui vẻ loại trừ chúng.


2
Như một sửa đổi cho câu trả lời của tôi. Điều này thực sự sẽ giải quyết vấn đề "quá mức" phần đệm / lề / khoảng trắng. Tuy nhiên, nếu bạn muốn bao gồm các nhãn trục và / hoặc chú giải, bạn sẽ cần giảm chiều cao và chiều rộng của khu vực biểu đồ để một cái gì đó hơi thấp hơn chiều rộng / chiều cao bên ngoài. Điều này sẽ "cho" API biểu đồ biết có đủ chỗ để hiển thị các thuộc tính này. Nếu không nó sẽ vui vẻ loại trừ chúng.
pimbrouwers

1
Tôi nghĩ lý do các giải pháp khác không hiệu quả với bạn có lẽ là vì họ cho rằng biểu đồ đã được chèn vào DIV đã có các thuộc tính chiều rộng và chiều cao đặt trước, nhưng bạn đã không làm điều đó. Bạn nên đặt trước chiều cao và chiều rộng trong HTML để bố cục của trang không thay đổi khi biểu đồ được lấp đầy. Điều đó sẽ ngăn mọi thứ "nhảy lung tung" trên trang khi nó tải.
Dave Burton

@ Cảm ơn vì lời đề nghị, nhưng tôi không nhất thiết phải đồng ý. Có rất nhiều tình huống mà bạn chỉ đơn giản là không biết những giá trị đó sẽ là gì. Và có vẻ như ít nhất 15 người khác cảm thấy như thể lời đề nghị của tôi là đủ.
pimbrouwers

1
Tôi đồng ý, Pim. Khi bạn không biết trước chiều rộng và / hoặc chiều cao (có lẽ vì bạn muốn trang thích ứng một cách nhạy bén), bạn không thể đặt trước chiều rộng và chiều cao trong DIV. Tôi chỉ chỉ ra lý do tại sao tôi nghĩ rằng các giải pháp được đưa ra trong các câu trả lời khác có hiệu quả với chúng nhưng không hiệu quả với bạn, và tại sao nên đặt trước chiều rộng và chiều cao trong DIV nếu bạn có thể.
Dave Burton

1
Vì lý do @DaveBurton chỉ ra, đây có thể là câu trả lời chính xác nếu làm việc với CSS Grid (mà tôi là)
Stephen R

14

Nó bị thiếu trong các tài liệu (Tôi đang sử dụng phiên bản 43), nhưng bạn thực sự có thể sử dụng thuộc tính bên phảibên dưới của khu vực biểu đồ:

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

Vì vậy, có thể sử dụng chiều rộng và chiều cao đáp ứng đầy đủ và ngăn bất kỳ nhãn trục hoặc truyền thuyết nào bị cắt.


Khả năng sử dụng quyền chắc chắn là một bổ sung tốt, tuy nhiên trong trường hợp biểu đồ cột yêu cầu số cho trục dọc, nó sẽ gặp khó khăn khi các giá trị dao động bởi một bit tốt - ví dụ: biểu đồ có các giá trị nằm trong khoảng 0 - 100 sẽ yêu cầu giá trị bên trái là 20 pixel, nhưng 0 - 10 triệu sẽ cần 100 pixel và sử dụng 100 pixel sau đó sẽ để lại một lề khá lớn, đó là điều tôi nghĩ rằng tất cả chúng ta đang cố gắng loại bỏ :) Trừ khi có một tùy chọn cho phép biểu đồ điều chỉnh độ rộng của chính nó mà tôi đang thiếu. Bất kỳ suy nghĩ về cách một người có thể có thể giải quyết điều này?
dùng3800174

Có vẻ như họ đã ghi lại vào ngày 2 tháng 10 năm 2015 tại đây: archive.is/lwbQY#selection-2997.0-3011.1
Dave Burton

13

Có khả năng này giống như Aman Virk đã đề cập :

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

Nhưng hãy nhớ rằng phần đệm và lề không có ở đó để làm phiền bạn. Nếu bạn có khả năng chuyển đổi giữa các loại biểu đồ khác nhau như Cột biểu đồ và loại có cột dọc thì bạn cần một số lề để hiển thị nhãn của các dòng đó.

Nếu bạn lấy đi phần lề đó thì cuối cùng bạn sẽ chỉ hiển thị một phần của nhãn hoặc không có nhãn nào cả.

Vì vậy, nếu bạn chỉ có một loại biểu đồ thì bạn có thể thay đổi lề và phần đệm như Arman đã nói. Nhưng nếu có thể chuyển đổi, đừng thay đổi chúng.


11

Có một chủ đề có sẵn đặc biệt cho việc này

options: {
  theme: 'maximized'
}

từ các tài liệu biểu đồ Google:

Hiện tại chỉ có một chủ đề có sẵn:

'Tối đa hóa' - Tối đa hóa diện tích của biểu đồ và vẽ huyền thoại và tất cả các nhãn bên trong khu vực biểu đồ. Đặt các tùy chọn sau:

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

Đây có vẻ là lựa chọn tốt nhất. Sau khi cài đặt chủ đề: 'tối đa hóa', vẫn có thể điều chỉnh ngoại hình, ví dụ: chiều cao: '90%', textPocation: 'out', v.v.
Jiri Kriz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.