ภาพรวม
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 |
เริ่มทำงานเมื่อผู้ใช้คลิกเอนทิตีภาพ หากต้องการดูสิ่งที่เลือก โปรดโทรหา
พร็อพเพอร์ตี้: ไม่มี
|
นโยบายข้อมูล
โค้ดและข้อมูลทั้งหมดจะได้รับการประมวลผลและแสดงผลในเบราว์เซอร์ โดยจะไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ใดๆ