개요
VegaChart는 대화형 시각화 디자인을 생성, 저장, 공유하는 선언적 언어인 Vega 시각화 문법을 사용하여 만들 수 있는 여러 시각화 중 하나입니다. Vega에서는 시각화된 시각적 요소와 동작을 JSON 형식으로 설명하고 캔버스 또는 SVG를 사용하여 웹 기반 뷰를 생성할 수 있습니다.
VegaChart를 그릴 때 Vega 시각화 문법으로 차트를 만드는 방법에 관한 사양을 옵션 내에 포함해야 합니다. 아래에 이러한 사양의 몇 가지 예가 나와 있으며 VegaChart 예 페이지에서 더 많은 예를 확인할 수 있습니다.
참고: Google 차트 VegaChart에는 Vega JSON 사양(예시 갤러리의 모든 항목 포함)으로 지정할 수 있는 모든 Vega 차트가 그려질 수 있지만 Vega API를 호출해야 하는 추가 기능은 아직 사용할 수 없습니다.
간단한 예시, 막대 그래프
다음은 막대형 차트를 그리는 VegaChart의 간단한 예입니다. 원본 예시, 자세한 튜토리얼, VGA 차트 내 막대 그래프를 참고하세요.
이는 Google 차트에서 막대 그래프를 생성하는 또 다른 방법이지만, 이 VegaChart를 기반으로 다른 막대 그래프와 열 차트의 모든 기능을 새로운 구현에 통합할 계획입니다.
이 예에서 'data' 옵션은 draw로 제공된 'datatable'을 'table'이라는 다른 데이터 객체의 '소스'로 사용하는 Vest 사양의 다른 사양으로 대체되며 'table'은 나머지 Vega 사양에서 사용됩니다.
'data': [{'name': 'table', 'source': 'datatable'}],
<html> <head> <script src='https://www.gstatic.com/charts/loader.js'></script> <script> google.charts.load('upcoming', {'packages': ['vegachart']}).then(drawChart); function drawChart() { const dataTable = new google.visualization.DataTable(); dataTable.addColumn({type: 'string', 'id': 'category'}); dataTable.addColumn({type: 'number', 'id': 'amount'}); dataTable.addRows([ ['A', 28], ['B', 55], ['C', 43], ['D', 91], ['E', 81], ['F', 53], ['G', 19], ['H', 87], ]); const options = { "vega": { "$schema": "https://vega.github.io/schema/vega/v4.json", "width": 500, "height": 200, "padding": 5, 'data': [{'name': 'table', 'source': 'datatable'}], "signals": [ { "name": "tooltip", "value": {}, "on": [ {"events": "rect:mouseover", "update": "datum"}, {"events": "rect:mouseout", "update": "{}"} ] } ], "scales": [ { "name": "xscale", "type": "band", "domain": {"data": "table", "field": "category"}, "range": "width", "padding": 0.05, "round": true }, { "name": "yscale", "domain": {"data": "table", "field": "amount"}, "nice": true, "range": "height" } ], "axes": [ { "orient": "bottom", "scale": "xscale" }, { "orient": "left", "scale": "yscale" } ], "marks": [ { "type": "rect", "from": {"data":"table"}, "encode": { "enter": { "x": {"scale": "xscale", "field": "category"}, "width": {"scale": "xscale", "band": 1}, "y": {"scale": "yscale", "field": "amount"}, "y2": {"scale": "yscale", "value": 0} }, "update": { "fill": {"value": "steelblue"} }, "hover": { "fill": {"value": "red"} } } }, { "type": "text", "encode": { "enter": { "align": {"value": "center"}, "baseline": {"value": "bottom"}, "fill": {"value": "#333"} }, "update": { "x": {"scale": "xscale", "signal": "tooltip.category", "band": 0.5}, "y": {"scale": "yscale", "signal": "tooltip.amount", "offset": -2}, "text": {"signal": "tooltip.amount"}, "fillOpacity": [ {"test": "datum === tooltip", "value": 0}, {"value": 1} ] } } } ] } }; const chart = new google.visualization.VegaChart(document.getElementById('chart-div')); chart.draw(dataTable, options); } </script> </head> <body> <div id="chart-div" style="width: 700px; height: 250px;"></div> </body> </html>
로드 중
google.charts.load
패키지 이름은 "vegachart"
입니다.
google.charts.load("current", {packages: ["vegachart"]});
시각화의 클래스 이름은 google.visualization.VegaChart
입니다.
var visualization = new google.visualization.VegaChart(container);
데이터 형식
DataTable (또는 DataView)을 사용하여 다른 Google 차트와 매우 유사한 방식으로 VegaChart에 데이터를 전달할 수 있습니다. 주요 차이점은 VegaChart는 열 순서를 사용하여 사용 방식을 결정하는 대신 각 열의 ID를 지정한 특정 Vega 시각화의 예상값과 일치시킵니다.
예를 들어 다음 DataTable은 'category'
및 'amount'
의 ID를 갖는 열로 생성되며, 이러한 열을 참조하기 위해 'vega' 옵션 내에 동일한 ID가 사용됩니다.
const dataTable = new google.visualization.DataTable(); dataTable.addColumn({type: 'string', 'id': 'category'}); dataTable.addColumn({type: 'number', 'id': 'amount'}); dataTable.addRows([ ['A', 28], ['B', 55], ['C', 43], ]); const options = { 'vega': { ... // Here we create the Vega data object named 'datatable', // which will be passed in via the draw() call with a DataTable. 'data': {'name': 'datatable'}, 'scales': [ { 'name': 'yscale', // Here is an example of how to use the 'amount' field from 'datatable'. 'domain': {'data': 'datatable', 'field': 'amount'}, } ] } }; const chart = new google.visualization.VegaChart( document.getElementById('chart-div')); chart.draw(dataTable, options);
// A DataTable is required, but it may be empty. const dataTable = new google.visualization.DataTable(); const options = { 'vega': { // Here the data is specified inline in the Vega specification. "data": [ { "name": "table", "values": [ {"category": "A", "amount": 28}, {"category": "B", "amount": 55}, {"category": "C", "amount": 43}, ] } ], 'scales': [ { 'name': 'yscale', // Here is how Vega normally uses the 'amount' field from 'table'. "domain": {"data": "table", "field": "category"}, } ] } }; const chart = new google.visualization.VegaChart( document.getElementById('chart-div')); chart.draw(dataTable, options);
그러나 이러한 DataTable 하나만 VegaChart에 전달할 수 있지만 일부 Vega 차트에는 두 개 이상의 데이터 테이블이 필요합니다. 이 제한사항은 향후 출시되는 Google 차트에서 해결될 예정입니다.
그때까지는 'vega'
'data'
옵션에서 사용해야 하는 추가 데이터를 지정할 수 있습니다. 인라인 처리하거나 URL에서 로드하면 됩니다.
아래에서 두 가지 예시를 모두 확인할 수 있습니다.
구성 옵션
이름 | |
---|---|
차트 영역 |
차트 영역의 위치와 크기를 구성하기 위한 구성원이 있는 객체입니다 (축과 범례를 제외하고 차트 자체가 그려짐). 숫자 또는 숫자 다음에 %가 오는 두 가지 형식이 지원됩니다. 간단한 숫자는 픽셀 단위 값, 숫자 다음에 % 가 백분율로 표시됩니다. 예: 유형: 객체
기본값: null
|
차트 영역 |
아래쪽 테두리에서 차트를 그리는 거리 유형: 숫자 또는 문자열
기본값: 자동
|
차트 영역 |
왼쪽 테두리에서 차트를 그리는 거리 유형: 숫자 또는 문자열
기본값: 자동
|
차트 영역.right |
오른쪽 테두리에서 차트를 그리는 거리 유형: 숫자 또는 문자열
기본값: 자동
|
차트 영역.top |
위쪽 테두리에서 차트를 그리는 거리 유형: 숫자 또는 문자열
기본값: 자동
|
차트 영역 너비 |
차트 영역 너비 유형: 숫자 또는 문자열
기본값: 자동
|
차트 영역 |
차트 영역 높이를 나타냅니다. 유형: 숫자 또는 문자열
기본값: 자동
|
높이 |
차트의 높이(픽셀)입니다. 유형: 숫자
기본값: 값을 포함하는 요소의 높이
|
너비 |
차트의 너비(픽셀)입니다. 유형: 숫자
기본값: 포함하는 요소의 너비
|
방법
메서드 | |
---|---|
draw(data, options) |
차트를 그립니다. 차트는 반환 유형: 없음
|
getAction(actionID) |
요청된 반환 유형: 객체
|
getBoundingBox(id) |
차트 요소
값은 차트의 컨테이너를 기준으로 합니다. 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 객체
|
getChartAreaBoundingBox() |
차트 콘텐츠의 왼쪽, 상단, 너비, 높이가 포함된 객체를 반환합니다(라벨 및 범례 제외).
값은 차트의 컨테이너를 기준으로 합니다. 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 객체
|
getChartLayoutInterface() |
차트 및 그 요소의 화면 내 게재위치 정보가 포함된 객체를 반환합니다. 반환된 객체에서 다음 메서드를 호출할 수 있습니다.
차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 객체
|
getHAxisValue(xPosition, optional_axis_index) |
차트 컨테이너의 왼쪽 가장자리로부터의 픽셀 오프셋인 예: 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 숫자
|
getImageURI() |
이미지 URI로 직렬화된 차트를 반환합니다. 차트를 그린 후에 이 메서드를 호출하세요. PNG 차트 인쇄를 참조하세요. 반환 유형: 문자열
|
getSelection() |
선택한 차트 항목의 배열을 반환합니다.
이 차트에서는 특정 시점에 하나의 항목만 선택할 수 있습니다.
반환 유형: 선택 요소의 배열
|
getVAxisValue(yPosition, optional_axis_index) |
차트 컨테이너의 상단 가장자리에서 아래로 내려가는 픽셀 오프셋인 예: 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 숫자
|
getXLocation(dataValue, optional_axis_index) |
차트 컨테이너의 왼쪽 가장자리를 기준으로 예: 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 숫자
|
getYLocation(dataValue, optional_axis_index) |
차트 컨테이너의 상단 가장자리를 기준으로 한 예: 차트를 그린 후에 이 메서드를 호출하세요. 반환 유형: 숫자
|
removeAction(actionID) |
차트에서 요청된 반환 유형:
none |
setAction(action) |
사용자가 작업 텍스트를 클릭할 때 실행할 도움말 작업을 설정합니다.
모든 팁 작업은 차트의 반환 유형:
none |
setSelection() |
지정된 차트 항목을 선택합니다. 이전 선택을 취소합니다.
이 차트에서는 한 번에 하나의 항목만 선택할 수 있습니다.
반환 유형: 없음
|
clearChart() |
차트를 삭제하고 할당된 모든 리소스를 해제합니다. 반환 유형: 없음
|
이벤트
이러한 이벤트를 사용하는 방법에 관한 자세한 내용은 기본 상호작용, 이벤트 처리, 실행 이벤트를 참고하세요.
이름 | |
---|---|
animationfinish |
전환 애니메이션이 완료되면 실행됩니다. 속성: 없음
|
click |
사용자가 차트 내부를 클릭하면 실행됩니다. 제목, 데이터 요소, 범례 항목, 축, 격자선, 라벨을 클릭하는 시점을 식별하는 데 사용할 수 있습니다. 속성: targetID
|
error |
차트를 렌더링하려고 할 때 오류가 발생하면 실행됩니다. 속성: ID, 메시지
|
legendpagination |
사용자가 범례 페이지로 나누기 화살표를 클릭하면 발생됩니다. 현재 범례의 0 기반 페이지 색인과 총 페이지 수를 전달합니다. 속성: currentPageIndex, totalPages
|
onmouseover |
사용자가 시각적 개체 위로 마우스를 가져가면 시작됩니다. 해당하는 데이터 테이블 요소의 행 및 열 색인을 전달합니다. 속성: 행, 열
|
onmouseout |
사용자가 시각적 항목에서 마우스를 치우면 실행됩니다. 해당하는 데이터 테이블 요소의 행 및 열 색인을 전달합니다. 속성: 행, 열
|
ready |
차트에서 외부 메서드 호출을 사용할 수 있습니다. 차트와 상호작용하고 차트를 그린 후 메서드를 호출하려면 속성: 없음
|
select |
사용자가 시각적 항목을 클릭하면 시작됩니다. 어떤 항목이 선택되었는지 알아보려면 속성: 없음
|
데이터 정책
모든 코드와 데이터가 브라우저에서 처리되고 렌더링됩니다. 데이터는 서버로 전송되지 않습니다.