이 페이지에는 차트를 인스턴스화하고 페이지에 그릴 수 있는 다양한 방법이 나와 있습니다. 각 방법에는 아래와 같은 장단점이 있습니다.
목차
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>