Tổng quan
VegaChart là một trong nhiều hình ảnh trực quan có thể được tạo bằng cách sử dụng Vega Visual Semantic, là một ngôn ngữ khai báo để tạo, lưu và chia sẻ các thiết kế hình ảnh trực quan tương tác. Với Vega, bạn có thể mô tả giao diện trực quan và hành vi tương tác của hình ảnh trực quan ở định dạng JSON và tạo thành phần hiển thị dựa trên nền tảng web bằng Canvas hoặc SVG.
Khi vẽ VegaChart, bạn phải bao gồm trong các tùy chọn thông số kỹ thuật về cách xây dựng biểu đồ trong ngữ pháp hình ảnh hóa Vega. Dưới đây là một số ví dụ về các thông số kỹ thuật đó và một số ví dụ khác trên trang Ví dụ của VegaChart.
Lưu ý: Mặc dù Biểu đồ VegaChart của Google có thể vẽ bất kỳ biểu đồ Vega nào mà bạn có thể chỉ định bằng Thông số kỹ thuật Vega JSON (bao gồm tất cả mọi thứ trong Thư viện ví dụ), các tính năng bổ sung yêu cầu lệnh gọi đến API Vega vẫn chưa có sẵn.
Ví dụ đơn giản: Biểu đồ thanh
Dưới đây là một ví dụ đơn giản về Biểu đồ VegaChart vẽ Biểu đồ thanh. (Xem ví dụ gốc, hướng dẫn chi tiết và Biểu đồ thanh trong trình chỉnh sửa biểu đồ Vega.)
Mặc dù đây là một cách khác để tạo biểu đồ thanh trong Biểu đồ của Google, nhưng chúng tôi dự định tích hợp tất cả tính năng của biểu đồ Thanh và Cột khác vào nội dung triển khai mới dựa trên VegaChart này.
Lưu ý:
'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>
Đang tải
Tên gói google.charts.load
là "vegachart"
.
google.charts.load("current", {packages: ["vegachart"]});
Tên lớp của hình ảnh trực quan là google.visualization.VegaChart
.
var visualization = new google.visualization.VegaChart(container);
Định dạng dữ liệu
Dữ liệu có thể được chuyển đến VegaChart theo cách rất giống
với các Biểu đồ khác của Google, sử dụng DataTable (hoặc DataView). Điểm khác biệt chính là thay vì dựa vào thứ tự của các cột để xác định cách sử dụng, VegaChart dựa vào mã nhận dạng của từng cột giống với nội dung dự kiến cho hình ảnh Vega cụ thể mà bạn đã chỉ định.
Ví dụ: Bảng dữ liệu sau đây được tạo bằng các cột có mã nhận dạng cho
'category'
và 'amount'
, và các mã nhận dạng đó được dùng trong tuỳ chọn "vega" để tham chiếu
đến các cột này.
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);
Tuy nhiên, bạn chỉ có thể truyền một bảng DataData như vậy vào VegaChart theo cách này, trong khi một số biểu đồ Vega yêu cầu nhiều bảng dữ liệu. Chúng tôi sẽ giải quyết hạn chế này trong bản phát hành sau này của Biểu đồ Google.
Trong thời gian chờ đợi, bạn có thể chỉ định bất kỳ dữ liệu bổ sung nào mà bạn cần sử dụng trong
tùy chọn 'vega'
'data'
, bằng cách
cùng dòng hoặc tải dữ liệu này từ một URL.
Bạn có thể xem ví dụ về cả hai ví dụ này bên dưới.
Các tuỳ chọn cấu hình
Tên | |
---|---|
Khu vực |
Một đối tượng có thành viên để định cấu hình vị trí và kích thước của khu vực biểu đồ (chính là biểu đồ sẽ được vẽ, ngoại trừ trục và chú giải). Có hai định dạng được hỗ trợ: số hoặc số
theo sau là %. Số đơn giản là giá trị tính bằng pixel; số theo sau là % là
phần trăm. Ví dụ: Loại: đối tượng
Mặc định: rỗng
|
ChartArea.bottom |
Khoảng cách để vẽ biểu đồ từ đường viền dưới cùng. Loại: số hoặc chuỗi
Mặc định: tự động
|
ChartArea.left |
Khoảng cách để vẽ biểu đồ từ đường viền trái. Loại: số hoặc chuỗi
Mặc định: tự động
|
ChartArea.right |
Khoảng cách để vẽ biểu đồ từ đường viền phải. Loại: số hoặc chuỗi
Mặc định: tự động
|
ChartArea.top |
Khoảng cách để vẽ biểu đồ từ đường viền trên. Loại: số hoặc chuỗi
Mặc định: tự động
|
vấn đề |
Chiều rộng khu vực trên biểu đồ. Loại: số hoặc chuỗi
Mặc định: tự động
|
vấn đề |
Chiều cao khu vực trên biểu đồ. Loại: số hoặc chuỗi
Mặc định: tự động
|
độ cao |
Chiều cao của biểu đồ, tính bằng pixel. Loại: số
Mặc định: chiều cao của phần tử chứa
|
chiều rộng |
Chiều rộng của biểu đồ, tính bằng pixel. Loại: số
Mặc định: chiều rộng của phần tử chứa
|
Phương thức
Phương thức | |
---|---|
draw(data, options) |
Vẽ biểu đồ. Biểu đồ chỉ chấp nhận các lệnh gọi phương thức khác sau khi sự kiện Loại dữ liệu trả về: không có
|
getAction(actionID) |
Trả về đối tượng hành động trên chú giải công cụ có Loại dữ liệu trả về: đối tượng
|
getBoundingBox(id) |
Trả về một đối tượng chứa thành phần bên trái, trên cùng, chiều rộng và chiều cao của phần tử biểu đồ
Giá trị tương ứng với vùng chứa của biểu đồ. Gọi hàm này sau khi biểu đồ được vẽ. Loại dữ liệu trả về: đối tượng
|
getChartAreaBoundingBox() |
Trả về một đối tượng chứa nội dung bên trái, trên cùng, chiều rộng và chiều cao của nội dung biểu đồ (tức là không bao gồm nhãn và chú giải):
Giá trị tương ứng với vùng chứa của biểu đồ. Gọi hàm này sau khi biểu đồ được vẽ. Loại dữ liệu trả về: đối tượng
|
getChartLayoutInterface() |
Trả về một đối tượng chứa thông tin về vị trí trên màn hình của biểu đồ và các phần tử của biểu đồ. Bạn có thể gọi các phương thức sau trên đối tượng được trả về:
Gọi hàm này sau khi biểu đồ được vẽ. Loại dữ liệu trả về: đối tượng
|
getHAxisValue(xPosition, optional_axis_index) |
Trả về giá trị dữ liệu theo chiều ngang tại Ví dụ: Gọi hàm này sau khi biểu đồ được vẽ. Loại trả về: số
|
getImageURI() |
Trả về biểu đồ được chuyển đổi tuần tự dưới dạng một URI hình ảnh. Gọi hàm này sau khi biểu đồ được vẽ. Xem phần In biểu đồ PNG. Loại trả về: chuỗi
|
getSelection() |
Trả về một mảng các thực thể biểu đồ đã chọn.
Đối với biểu đồ này, chỉ có thể chọn một thực thể vào bất kỳ thời điểm nào.
Loại dữ liệu trả về: Một mảng các phần tử lựa chọn
|
getVAxisValue(yPosition, optional_axis_index) |
Trả về giá trị dữ liệu dọc tại Ví dụ: Gọi hàm này sau khi biểu đồ được vẽ. Loại trả về: số
|
getXLocation(dataValue, optional_axis_index) |
Trả về toạ độ x của pixel theo Ví dụ: Gọi hàm này sau khi biểu đồ được vẽ. Loại trả về: số
|
getYLocation(dataValue, optional_axis_index) |
Trả về toạ độ y pixel của Ví dụ: Gọi hàm này sau khi biểu đồ được vẽ. Loại trả về: số
|
removeAction(actionID) |
Xoá thao tác chú giải công cụ với Loại dữ liệu trả về:
none |
setAction(action) |
Đặt hành động trong chú giải công cụ sẽ được thực thi khi người dùng nhấp vào văn bản hành động.
Phương thức
Bạn phải thiết lập tất cả hành động trong chú giải công cụ trước khi gọi phương thức Loại dữ liệu trả về:
none |
setSelection() |
Chọn các thực thể biểu đồ đã chỉ định. Hủy mọi lựa chọn trước đó.
Đối với biểu đồ này, mỗi lần bạn chỉ có thể chọn một thực thể.
Loại dữ liệu trả về: không có
|
clearChart() |
Xoá biểu đồ và giải phóng tất cả tài nguyên được phân bổ của biểu đồ. Loại dữ liệu trả về: không có
|
Sự kiện
Để biết thêm thông tin về cách sử dụng những sự kiện này, hãy xem bài viết Hoạt động tương tác cơ bản, Xử lý sự kiện và Sự kiện kích hoạt.
Tên | |
---|---|
animationfinish |
Được kích hoạt khi ảnh động chuyển đổi hoàn tất. Thuộc tính: không có
|
click |
Được kích hoạt khi người dùng nhấp vào bên trong biểu đồ. Có thể được dùng để xác định thời điểm người dùng nhấp vào tiêu đề, các phần tử dữ liệu, mục nhập chú giải, trục, đường lưới, hoặc nhãn. Thuộc tính: targetID
|
error |
Được kích hoạt khi xảy ra lỗi khi cố gắng hiển thị biểu đồ. Thuộc tính: mã nhận dạng, thông báo
|
legendpagination |
Được kích hoạt khi người dùng nhấp vào mũi tên phân trang chú giải. Trả về chỉ mục trang dựa trên 0 chú giải hiện tại và tổng số trang. Thuộc tính: currentPageIndex, totalPages
|
onmouseover |
Được kích hoạt khi người dùng di chuột qua một thực thể hình ảnh. Truyền lại các chỉ mục hàng và cột của phần tử bảng dữ liệu tương ứng. Tài sản: hàng, cột
|
onmouseout |
Được kích hoạt khi người dùng di chuột khỏi một thực thể hình ảnh. Chuyển trở lại các chỉ mục hàng và cột của phần tử bảng dữ liệu tương ứng. Tài sản: hàng, cột
|
ready |
Biểu đồ đã sẵn sàng cho các lệnh gọi phương thức bên ngoài. Nếu muốn tương tác với biểu đồ và gọi các phương thức sau khi vẽ, bạn nên thiết lập trình nghe cho sự kiện này trước khi bạn gọi phương thức Thuộc tính: không có
|
select |
Được kích hoạt khi người dùng nhấp vào một thực thể hình ảnh. Để tìm hiểu những mục bạn đã chọn, hãy gọi
Thuộc tính: không có
|
Chính sách dữ liệu
Toàn bộ mã và dữ liệu đều được xử lý và kết xuất trong trình duyệt. Dữ liệu không được gửi đến bất kỳ máy chủ nào.