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>

바이올린 예

이 예제에서 패딩 또는 여백을 어떻게 제거합니까?


당신이 꺾은 선형 차트의 왼쪽에 측정이 있기 때문에 누군가가 정당화하고 싶다면, chartArea: {width: '70%', left: '30%'}나를 위해 속임수를 쓰십시오. 출처 : code.google.com/p/google-visualization-api-issues/issues/…
IsmailS

답변:


246

API 문서에 나열된 일부 구성 옵션을 추가하고 조정 하면 다양한 스타일을 만들 수 있습니다. 예를 들어, 여기에 버전입니다 필요가 없어 대부분의 여분의 빈 공간을 설정하여 chartArea.width100 %chartArea.height80 % 와 이동 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

여기서 키 는 "left"또는 "top"값과 는 아무런 관련없습니다 . 그러나 오히려 :

차트차트 영역 의 차원 이 설정되고 같은 값으로 설정됩니다.

내 답변에 대한 수정으로. 위의 내용은 "과도한"패딩 / 여백 / 공백 문제를 실제로 해결합니다. 그러나 축 레이블 및 / 또는 범례 를 포함하려면 차트 영역의 높이와 너비를 줄여서 외부 너비 / 높이보다 약간 아래로 줄이십시오. 이 속성을 표시 할 충분한 공간이 있음을 차트 API에 "알립니다". 그렇지 않으면 행복하게 제외됩니다.


2
내 대답에 대한 수정으로. 이렇게하면 "과도한"패딩 / 여백 / 공백 문제가 해결됩니다. 그러나 축 레이블 및 / 또는 범례를 포함하려면 차트 영역의 높이와 너비를 줄여서 외부 너비 / 높이보다 약간 아래로 줄이십시오. 이렇게하면 이러한 속성을 표시하기에 충분한 공간이 있음을 차트 API에 "알립니다". 그렇지 않으면 행복하게 제외됩니다.
pimbrouwers

1
다른 솔루션이 효과가없는 이유는 이미 너비와 높이 속성이 사전 설정된 DIV에 차트가 삽입되었다고 가정했을 것입니다. 그래프가 채워질 때 페이지의 레이아웃이 변경되지 않도록 HTML에서 높이와 너비를 미리 설정하는 것이 좋습니다. 그러면 페이지가로드 될 때 물건이 "뛰어 오르지"않습니다.
Dave Burton

@ 제안에 감사드립니다. 그러나 반드시 동의하지는 않습니다. 단순히 그 가치가 무엇인지 모르는 상황이 많이 있습니다. 그리고 적어도 15 명의 다른 사람들이 나의 제물이 적절하다고 느끼는 것 같습니다.
pimbrouwers

1
동의합니다, 핌 너비 및 / 또는 높이를 미리 모르는 경우 (아마도 페이지가 반응 적으로 조정되기를 원하기 때문에) DIV에서 너비 및 높이를 사전 설정할 수 없습니다. 방금 다른 답변에 제공된 솔루션이 효과가 있다고 생각했지만 효과가 없었던 이유와 가능한 경우 DIV의 너비와 높이를 미리 설정하는 것이 좋습니다.
Dave Burton

1
@DaveBurton이 지적한 이유 때문에 CSS Grid로 작업하면 이것이 정답 일 것입니다.
Stephen 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 mil은 100 픽셀이 필요하고 100 픽셀을 사용하면 상당히 큰 마진이 남게되어 우리 모두가 제거하려고한다고 생각합니다 :) 차트가 누락 된 자체 너비를 조정할 수있는 옵션. 어떻게 해결할 수 있을지에 대한 생각이 있으십니까?
user3800174

2015 년 10 월 2 일에 다음과 같이 문서화 된 것 같습니다. 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 차트 문서에서 :

현재 하나의 테마 만 사용할 수 있습니다.

'maximized'-차트 영역을 최대화하고 차트 영역 안에 범례와 모든 레이블을 그립니다. 다음 옵션을 설정합니다 :

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

이것이 최선의 선택 인 것 같습니다. 테마 : '최대 값'을 설정 한 후에도 높이 : '90 %', textPosition : 'out'등의 모양을 조정할 수 있습니다.
Jiri Kriz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.