이 페이지에는 차트를 인스턴스화하고 페이지에 그릴 수 있는 다양한 방법이 나와 있습니다. 각 방법에는 아래와 같은 장단점이 있습니다.
목차
chart.draw()
다음은 이 문서의 Hello Chart! 예시에서 설명하는 기본 메서드입니다. 기본 단계는 다음과 같습니다.
- gstatic 라이브러리 로더, Google 시각화, 차트 라이브러리 로드
- 데이터 준비
- 차트 옵션 준비
- 차트 클래스를 인스턴스화하여 페이지 컨테이너 요소에 핸들을 전달합니다.
- 원하는 경우 차트 이벤트를 수신하도록 등록합니다. 차트의 메서드를 호출하려면 'ready' 이벤트를 수신 대기해야 합니다.
chart.draw()
를 호출하여 데이터와 옵션을 전달합니다.
장점:
- 프로세스의 모든 단계를 완벽하게 제어할 수 있습니다.
- 차트에서 발생한 모든 이벤트를 수신 대기하도록 등록할 수 있습니다.
단점:
- 상세
- 필요한 모든 차트 라이브러리를 명시적으로 로드해야 합니다.
- 쿼리를 전송하는 경우 콜백을 위해 수동으로 구현하고, 성공 여부를 확인하고, 반환된
DataTable
를 추출하여 차트에 전달해야 합니다.
예:
<html>
<head>
<!--Load the AJAX API-->
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
var data;
var chart;
// Load the Visualization API and the piechart package.
google.charts.load('current', {'packages':['corechart']});
// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(drawChart);
// Callback that creates and populates a data table,
// instantiates the pie chart, passes in the data and
// draws it.
function drawChart() {
// Create our data table.
data = new google.visualization.DataTable();
data.addColumn('string', 'Topping');
data.addColumn('number', 'Slices');
data.addRows([
['Mushrooms', 3],
['Onions', 1],
['Olives', 1],
['Zucchini', 1],
['Pepperoni', 2]
]);
// Set chart options
var options = {'title':'How Much Pizza I Ate Last Night',
'width':400,
'height':300};
// Instantiate and draw our chart, passing in some options.
chart = new google.visualization.PieChart(document.getElementById('chart_div'));
google.visualization.events.addListener(chart, 'select', selectHandler);
chart.draw(data, options);
}
function selectHandler() {
var selectedItem = chart.getSelection()[0];
var value = data.getValue(selectedItem.row, 0);
alert('The user selected ' + value);
}
</script>
</head>
<body>
<!--Div that will hold the pie chart-->
<div id="chart_div" style="width:400; height:300"></div>
</body>
</html>
ChartWrapper
ChartWrapper
는 적절한 모든 차트 라이브러리를 자동으로 로드하고 차트 도구 데이터 소스에 대한 쿼리 전송도 간소화하는 편리한 클래스입니다.
장점:
- 훨씬 적은 코드
- 필요한 모든 차트 라이브러리를 자동으로 로드합니다.
Query
객체를 만들고 콜백을 처리하여 데이터 소스를 훨씬 쉽게 쿼리할 수 있습니다.- 컨테이너 요소 ID를 전달하면 컨테이너 요소 ID에서 getElementByID를 자동으로 호출합니다.
- 데이터는 값 배열, JSON 리터럴 문자열,
DataTable
핸들 등 다양한 형식으로 제출할 수 있습니다.
단점:
ChartWrapper
는 현재 select, ready, error 이벤트만 전파합니다. 다른 이벤트를 가져오려면 래핑된 차트의 핸들을 가져오고 여기에서 이벤트를 구독해야 합니다. 예시는ChartWrapper
문서를 참조하세요.
예:
다음은 로컬에서 구성된 데이터가 배열로 지정된 열 차트의 예입니다. 배열 문법을 사용하여 차트 라벨이나 날짜/시간 값을 지정할 수는 없지만 이러한 값으로 DataTable
객체를 수동으로 만들어 dataTable
속성에 전달할 수 있습니다.
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current'); // Don't need to specify chart libraries!
google.charts.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var wrapper = new google.visualization.ChartWrapper({
chartType: 'ColumnChart',
dataTable: [['', 'Germany', 'USA', 'Brazil', 'Canada', 'France', 'RU'],
['', 700, 300, 400, 500, 600, 800]],
options: {'title': 'Countries'},
containerId: 'vis_div'
});
wrapper.draw();
}
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="vis_div" style="width: 600px; height: 400px;"></div>
</body>
</html>
다음은 Google 스프레드시트를 쿼리하여 데이터를 가져오는 선 차트의 예입니다. 코드는 콜백을 처리할 필요가 없습니다.
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current');
google.charts.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var wrapper = new google.visualization.ChartWrapper({
chartType: 'LineChart',
dataSourceUrl: 'http://spreadsheets.google.com/tq?key=pCQbetd-CptGXxxQIG7VFIQ&pub=1',
query: 'SELECT A,D WHERE D > 100 ORDER BY D',
options: {'title': 'Countries'},
containerId: 'vis_div'
});
wrapper.draw()
// No query callback handler needed!
}
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="vis_div" style="width: 600px; height: 400px;"></div>
</body>
</html>
자동 로드와 함께 사용하면 매우 간결한 코드를 만들 수 있습니다.
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current'); // Don't need to specify chart libraries!
google.charts.setOnLoadCallback(drawVisualization);
function drawVisualization() {
var wrapper = new google.visualization.ChartWrapper({
chartType: 'LineChart',
dataSourceUrl: 'http://spreadsheets.google.com/tq?key=pCQbetd-CptGXxxQIG7VFIQ&pub=1',
query: 'SELECT A,D WHERE D > 100 ORDER BY D',
options: {'title': 'Countries'},
containerId: 'vis_div'
});
wrapper.draw()
}
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="vis_div" style="width: 600px; height: 400px;"></div>
</body>
</html>
ChartWrapper와 함께 차트 편집기 사용
Google 스프레드시트에 내장된 차트 편집기 대화상자를 사용하여 차트를 디자인한 다음 차트를 나타내는 직렬화된 ChartWrapper
문자열을 요청할 수 있습니다. 그런 다음 이 문자열을 복사하여 붙여넣고 위의 ChartWrapper
에 설명된 대로 사용할 수 있습니다.
자체 페이지에 차트 편집기를 삽입하고 사용자가 다른 데이터 소스에 연결하고 ChartWrapper
문자열을 반환하는 메서드를 노출할 수 있습니다. 자세한 내용은 ChartEditor
참조 문서를 확인하세요.
DrawChart()
DrawChart
는 ChartWrapper
를 래핑하는 전역 정적 메서드입니다.
장점:
ChartWrapper
와 동일하지만 사용하기에 약간 더 짧습니다.
단점:
- 래퍼에 핸들을 반환하지 않으므로 어떤 이벤트도 처리할 수 없습니다.
<DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
<script type="text/javascript">
google.charts.load('current'); // Don't need to specify chart libraries!
google.charts.setOnLoadCallback(drawVisualization);
function drawVisualization() {
google.visualization.drawChart({
"containerId": "visualization_div",
"dataSourceUrl": "https://spreadsheets.google.com/a/google.com/tq?key=pCQbetd-CptGXxxQIG7VFIQ&pub=1",
"query":"SELECT A,D WHERE D > 100 ORDER BY D",
"refreshInterval": 5,
"chartType": "Table",
"options": {
"alternatingRowStyle": true,
"showRowNumber" : true
}
});
}
google.charts.setOnLoadCallback(drawVisualization);
</script>
</head>
<body style="font-family: Arial;border: 0 none;">
<div id="visualization_div" style="width: 600px; height: 400px;"></div>
</body>
</html>