ภาพรวม
VegaChart เป็นหนึ่งในการแสดงข้อมูลผ่านภาพที่เป็นไปได้ที่อาจสร้างขึ้นโดยใช้ Vega Visualization Grammar ซึ่งเป็นภาษาที่ใช้ประกาศสําหรับการสร้าง บันทึก และแชร์การออกแบบการแสดงภาพแบบอินเทอร์แอกทีฟ เมื่อใช้ Vega คุณจะอธิบายลักษณะที่ปรากฏของภาพและพฤติกรรมแบบอินเทอร์แอกทีฟของการแสดงภาพได้ในรูปแบบ JSON และสร้างมุมมองบนเว็บโดยใช้ Canvas หรือ SVG ได้
เมื่อวาด VegaChart คุณต้องใส่ข้อมูลจำเพาะในการสร้างแผนภูมิในไวยากรณ์การแสดงภาพ Vega ในตัวเลือก มีตัวอย่างบางส่วนของข้อกำหนดเฉพาะดังกล่าวด้านล่างและตัวอย่างอื่นๆ อีกหลายรายการในหน้าตัวอย่าง VegaChart
หมายเหตุ: แม้ว่า Google แผนภูมิ VegaChart จะวาดแผนภูมิ Vega ใดก็ได้ที่คุณระบุด้วยข้อกำหนดของ Vega JSON (รวมทุกอย่างใน แกลเลอรีตัวอย่าง) แต่ฟีเจอร์เพิ่มเติมที่ต้องเรียกใช้ Vega API ก็ยังยังไม่พร้อมให้บริการ
ตัวอย่างง่ายๆ แผนภูมิแท่ง
ต่อไปนี้เป็นตัวอย่างง่ายๆ ของ VegaChart ที่วาดแผนภูมิแท่ง (ดูตัวอย่างต้นฉบับ บทแนะนำโดยละเอียด และแผนภูมิแท่งในเครื่องมือแก้ไขแผนภูมิ Vega)
แม้ว่าสิ่งนี้จะเป็นอีกหนึ่งวิธีในการสร้างแผนภูมิแท่งใน Google แผนภูมิ แต่เราวางแผนที่จะผสานรวมฟีเจอร์ทั้งหมดของแผนภูมิแท่งและคอลัมน์อื่นๆ ในการใช้งานใหม่ตาม VegaChart นี้
ในตัวอย่างนี้ โปรดทราบว่าระบบจะแทนที่ตัวเลือก "data" ด้วยค่าต่อไปนี้ ซึ่งใช้ "datatable" จากการเรียกใช้Draw เป็น "source" สำหรับออบเจ็กต์ข้อมูลอื่นที่เรียกว่า "table" และใช้ "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);
รูปแบบข้อมูล
ข้อมูลอาจส่งผ่านไปยัง VegaChart ในลักษณะที่คล้ายกันมากกับแผนภูมิอื่นๆ ของ Google โดยใช้ DataTable (หรือ DataView) ความแตกต่างหลักๆ คือ VegaChart จะใช้รหัสของแต่ละคอลัมน์ตามที่คาดไว้สำหรับการแสดงข้อมูลผ่านภาพ Vega ซึ่งคุณระบุไว้ แทนที่จะใช้ลำดับของคอลัมน์ในการกำหนดลักษณะการใช้งาน
เช่น DataTable ต่อไปนี้สร้างด้วยคอลัมน์ที่มีรหัสสำหรับ 'category'
และ 'amount'
และมีการใช้รหัสเดียวกันภายในตัวเลือก "vega" เพื่ออ้างอิงคอลัมน์เหล่านี้
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 ได้เพียง 1 รายการเท่านั้น ในขณะที่แผนภูมิ Vega บางรายการต้องใช้ตารางข้อมูลมากกว่า 1 ตาราง เราจะแก้ไขข้อจำกัดนี้ในการเปิดตัว Google แผนภูมิในอนาคต
ในระหว่างนี้ คุณจะระบุข้อมูลเพิ่มเติมที่ต้องการใช้ในตัวเลือก 'vega'
'data'
ได้ ไม่ว่าจะด้วยการใส่ข้อมูลในบรรทัด หรือการโหลดข้อมูลจาก URL
ดูตัวอย่างของทั้ง 2 รูปแบบได้ที่ด้านล่าง
ตัวเลือกการกำหนดค่า
ชื่อ | |
---|---|
chartArea |
ออบเจ็กต์ที่มีสมาชิกเพื่อกำหนดค่าตำแหน่งและขนาดของพื้นที่แผนภูมิ (บริเวณที่มีการวาดแผนภูมิ ยกเว้นแกนและคำอธิบาย) ระบบรองรับ 2 รูปแบบคือ ตัวเลขหรือตัวเลขตามด้วย % ตัวเลขง่ายๆ คือค่าที่มีหน่วยเป็นพิกเซล ตัวเลขตามด้วย % คือเปอร์เซ็นต์ เช่น ประเภท: ออบเจ็กต์
ค่าเริ่มต้น: null
|
chartArea.bottom |
ระยะห่างในการวาดแผนภูมิจากเส้นขอบด้านล่าง ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
chartArea.left |
ระยะห่างในการวาดแผนภูมิจากเส้นขอบด้านซ้าย ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
chartArea.right |
ระยะห่างในการวาดแผนภูมิจากเส้นขอบด้านขวา ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
chartArea.top |
ระยะห่างในการวาดแผนภูมิจากเส้นขอบด้านบน ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
chartArea.width |
ความกว้างพื้นที่แผนภูมิ ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
chartArea.height |
ความสูงพื้นที่แผนภูมิ ประเภท: ตัวเลขหรือสตริง
ค่าเริ่มต้น: อัตโนมัติ
|
ส่วนสูง |
ความสูงของแผนภูมิเป็นพิกเซล ประเภท: ตัวเลข
ค่าเริ่มต้น: ความสูงขององค์ประกอบที่มีอยู่
|
ความกว้าง |
ความกว้างของแผนภูมิเป็นพิกเซล ประเภท: ตัวเลข
ค่าเริ่มต้น: ความกว้างขององค์ประกอบที่มีอยู่
|
วิธีการ
วิธีการ | |
---|---|
draw(data, options) |
วาดแผนภูมิ แผนภูมิยอมรับการเรียกใช้เมธอดเพิ่มเติมหลังจากที่เหตุการณ์ ประเภทการคืนสินค้า: ไม่มี
|
getAction(actionID) |
แสดงออบเจ็กต์การดำเนินการของเคล็ดลับเครื่องมือที่มี ประเภทผลลัพธ์: ออบเจ็กต์
|
getBoundingBox(id) |
แสดงผลออบเจ็กต์ที่มีด้านซ้าย ด้านบน ความกว้าง และความสูงขององค์ประกอบแผนภูมิ
ค่าจะสัมพันธ์กับคอนเทนเนอร์ของแผนภูมิ เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทผลลัพธ์: ออบเจ็กต์
|
getChartAreaBoundingBox() |
แสดงผลออบเจ็กต์ที่มีข้อมูลด้านซ้าย ด้านบน ความกว้าง และความสูงของเนื้อหาแผนภูมิ (นั่นคือ ไม่รวมป้ายกำกับและคำอธิบาย) ดังนี้
ค่าจะสัมพันธ์กับคอนเทนเนอร์ของแผนภูมิ เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทผลลัพธ์: ออบเจ็กต์
|
getChartLayoutInterface() |
แสดงผลออบเจ็กต์ที่มีข้อมูลเกี่ยวกับตำแหน่งบนหน้าจอของแผนภูมิและองค์ประกอบ เมธอดต่อไปนี้สามารถเรียกใช้ในออบเจ็กต์ที่แสดงผล
เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทผลลัพธ์: ออบเจ็กต์
|
getHAxisValue(xPosition, optional_axis_index) |
แสดงผลค่าข้อมูลแนวนอนที่ ตัวอย่าง: เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทการคืนสินค้า: ตัวเลข
|
getImageURI() |
แสดงผลแผนภูมิที่เรียงลำดับเป็น URI รูปภาพ เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทการแสดงผล: สตริง
|
getSelection() |
แสดงผลอาร์เรย์ของเอนทิตีแผนภูมิที่เลือก
สำหรับแผนภูมินี้ คุณสามารถเลือกเอนทิตีได้เพียง 1 รายการในช่วงเวลาหนึ่งๆ
ประเภทผลลัพธ์: อาร์เรย์ขององค์ประกอบการเลือก
|
getVAxisValue(yPosition, optional_axis_index) |
แสดงผลค่าข้อมูลแนวตั้งที่ ตัวอย่าง: เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทการคืนสินค้า: ตัวเลข
|
getXLocation(dataValue, optional_axis_index) |
แสดงผลพิกัด x ของพิกเซลของ ตัวอย่าง: เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทการคืนสินค้า: ตัวเลข
|
getYLocation(dataValue, optional_axis_index) |
แสดงผลพิกัด y ของพิกเซลของ ตัวอย่าง: เรียกใช้หลังจากที่มีการวาดแผนภูมิ ประเภทการคืนสินค้า: ตัวเลข
|
removeAction(actionID) |
นำการดำเนินการเคล็ดลับเครื่องมือที่มี ประเภทการคืนสินค้า:
none |
setAction(action) |
ตั้งค่าการดำเนินการเคล็ดลับเครื่องมือที่จะทำงานเมื่อผู้ใช้คลิกที่ข้อความการดำเนินการ
เมธอด
คุณควรตั้งค่าการดำเนินการเคล็ดลับเครื่องมือทั้งหมดก่อนที่จะเรียกใช้เมธอด ประเภทการคืนสินค้า:
none |
setSelection() |
เลือกเอนทิตีแผนภูมิที่ระบุ ยกเลิกรายการที่เลือกก่อนหน้า
สำหรับแผนภูมินี้ คุณสามารถเลือกเอนทิตีได้ครั้งละ 1 รายการเท่านั้น
ประเภทการคืนสินค้า: ไม่มี
|
clearChart() |
ล้างแผนภูมิ และปล่อยทรัพยากรที่จัดสรรทั้งหมด ประเภทการคืนสินค้า: ไม่มี
|
กิจกรรม
ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้เหตุการณ์เหล่านี้ได้ที่การโต้ตอบพื้นฐาน การจัดการเหตุการณ์ และเหตุการณ์การเริ่มทำงาน
ชื่อ | |
---|---|
animationfinish |
เริ่มทำงานเมื่อภาพเคลื่อนไหวการเปลี่ยนเสร็จสมบูรณ์ พร็อพเพอร์ตี้: ไม่มี
|
click |
เริ่มทำงานเมื่อผู้ใช้คลิกภายในแผนภูมิ ใช้เพื่อระบุว่ามีการคลิกชื่อ องค์ประกอบข้อมูล รายการคำอธิบาย แกน เส้นตาราง หรือป้ายกำกับเมื่อใด พร็อพเพอร์ตี้: targetID
|
error |
เริ่มทำงานเมื่อเกิดข้อผิดพลาดขณะพยายามแสดงผลแผนภูมิ พร็อพเพอร์ตี้: รหัส ข้อความ
|
legendpagination |
เริ่มทำงานเมื่อผู้ใช้คลิกลูกศรใส่เลขหน้าคำอธิบาย ส่งกลับดัชนีหน้าที่มีฐาน 0 ในคำอธิบายปัจจุบันและจำนวนหน้าทั้งหมด พร็อพเพอร์ตี้:currentPageIndex, totalPages
|
onmouseover |
เริ่มทำงานเมื่อผู้ใช้วางเมาส์เหนือเอนทิตีที่มีภาพ ส่งกลับดัชนีแถวและคอลัมน์ขององค์ประกอบตารางข้อมูลที่เกี่ยวข้อง พร็อพเพอร์ตี้: แถว คอลัมน์
|
onmouseout |
เริ่มทำงานเมื่อผู้ใช้เลื่อนเมาส์ออกห่างจากองค์ประกอบภาพ ส่งกลับดัชนีแถวและคอลัมน์ขององค์ประกอบตารางข้อมูลที่เกี่ยวข้อง พร็อพเพอร์ตี้: แถว คอลัมน์
|
ready |
แผนภูมิพร้อมสำหรับการเรียกใช้เมธอดภายนอกแล้ว หากต้องการโต้ตอบกับแผนภูมิและวิธีเรียกใช้หลังจากที่วาดแล้ว คุณควรตั้งค่า Listener สำหรับเหตุการณ์นี้ก่อนเรียกใช้เมธอด พร็อพเพอร์ตี้: ไม่มี
|
select |
เริ่มทำงานเมื่อผู้ใช้คลิกเอนทิตีภาพ หากต้องการดูสิ่งที่เลือก โปรดโทรหา
พร็อพเพอร์ตี้: ไม่มี
|
นโยบายข้อมูล
โค้ดและข้อมูลทั้งหมดจะได้รับการประมวลผลและแสดงผลในเบราว์เซอร์ โดยจะไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ใดๆ