סקירה כללית
VegaChart הוא אחד מהרכיבים החזותיים האפשריים שאפשר ליצור באמצעות VegaVisual Grammar: שפה הצהרתית ליצירה, לשמירה ולשיתוף של עיצובים אינטראקטיביים להמחשה חזותית. באמצעות Vega ניתן לתאר את המראה החזותי ואת ההתנהגות האינטראקטיבית של הוויזואליזציה בפורמט JSON, וליצור תצוגות מבוססות-אינטרנט באמצעות Canvas או SVG.
כשמציירים VegaChart, צריך לכלול באפשרויות המפרט את אופן בניית התרשים לפי הדקדוק של תרשים ההמחשה של Vega. דוגמאות למפרטים כאלה מופיעות בהמשך, ויש עוד כמה דוגמאות בדף דוגמאות ל-VegaChart.
הערה: אפשר לשרטט ב-Google Charts VegaChart כל תרשים Vega שאפשר לציין באמצעות מפרט JSON של Vega (כולל כל מה שב גלריית הדוגמאות), אבל תכונות נוספות שדורשות קריאות ל- Vega API עדיין לא זמינות.
דוגמה פשוטה, תרשים העמודות
הנה דוגמה פשוטה ל-VegaCharta שממחישה תרשים עמודות. (תוכלו לראות את הדוגמה המקורית, מדריך מפורט ואת התרשים Bar Chart בעורך התרשימים של Vega).
זוהי דרך נוספת ליצור תרשים עמודות ב-Google Charts, אבל אנחנו מתכננים לשלב את כל התכונות של תרשימי העמודות והעמודות האחרים בהטמעה חדשה שמבוססת על VegaChart הזה.
בדוגמה הזו, שימו לב שהאפשרות data מוחלפת באפשרות הבאה, שמשתמשת ב-datatable שסופק על ידי בקשת השרטוט כ-source (מקור) בשביל אובייקט נתונים אחר שנקרא table, ובשאר המפרט של Vega נעשה שימוש ב-table (טבלה).
'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);
עם זאת, בצורה הזו אפשר להעביר ל-VegaChart רק אחד מהתרשימים האלה, ואילו תרשימים מסוימים ב-Vega דורשים יותר מטבלת נתונים אחת. נתייחס להגבלה הזו במהדורה עתידית של Google Charts.
בינתיים, אפשר לציין נתונים נוספים שבהם צריך להשתמש באפשרות 'vega'
'data'
. כדי לעשות את זה, אפשר להטביע אותם או לטעון אותם מכתובת URL.
בהמשך מופיעות דוגמאות לשניהם.
אפשרויות הגדרה
שם | |
---|---|
chartArea |
אובייקט עם חברים להגדרת המיקום והגודל של האזור בתרשים (שבו התרשים עצמו משורטט, לא כולל צירים ומקראים). יש שני פורמטים נתמכים: מספר או מספר ואחריו %. מספר פשוט הוא ערך בפיקסלים, ומספר ואחריו % הוא אחוז. דוגמה: Type: object (סוג אובייקט)
ברירת מחדל: null
|
chartArea.bottom |
המרחק מהגבול התחתון לשרטוט התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
chartArea.left |
המרחק מהגבול השמאלי לשרטוט התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
chartArea.right |
המרחק מהגבול הימני לשרטוט התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
chartArea.top |
המרחק מהגבול העליון לשרטוט התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
chartArea.width |
רוחב שטח התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
chartArea.height |
גובה השטח של התרשים. סוג: מספר או מחרוזת
ברירת מחדל: אוטומטי
|
גובה |
גובה התרשים, בפיקסלים. סוג: מספר
ברירת מחדל: גובה הרכיב שמכיל
|
רוחב |
רוחב התרשים, בפיקסלים. סוג: מספר
ברירת מחדל: רוחב הרכיב שמכיל
|
שיטות
שיטה | |
---|---|
draw(data, options) |
מצייר את התרשים. בתרשים יתקבלו קריאות נוספות ל-method, רק אחרי שהאירוע סוג החזרה: ללא
|
getAction(actionID) |
הפונקציה מחזירה את אובייקט הפעולה של ההסבר הקצר עם Return Type (סוג החזרה): אובייקט
|
getBoundingBox(id) |
מחזירה אובייקט שמכיל את הרכיבים השמאליים, החלק העליון, הרוחב והגובה של רכיב התרשים
הערכים הם יחסיים למאגר התגים של התרשים. קוראים לפונקציה אחרי הצגת התרשים. Return Type (סוג החזרה): אובייקט
|
getChartAreaBoundingBox() |
מחזירה אובייקט שמכיל את השדות השמאליים, החלק העליון, הרוחב והגובה של תוכן התרשים (כלומר, לא כולל תוויות ומקרא):
הערכים הם יחסיים למאגר התגים של התרשים. קוראים לפונקציה אחרי הצגת התרשים. Return Type (סוג החזרה): אובייקט
|
getChartLayoutInterface() |
מחזירה אובייקט שמכיל מידע על המיקום של התרשים והרכיבים שלו. אפשר לקרוא ל-methods הבאות באובייקט שמוחזר:
קוראים לפונקציה אחרי הצגת התרשים. Return Type (סוג החזרה): אובייקט
|
getHAxisValue(xPosition, optional_axis_index) |
הפונקציה מחזירה את ערך הנתונים האופקי ב- דוגמה: קוראים לפונקציה אחרי הצגת התרשים. סוג החזרה: מספר
|
getImageURI() |
מחזירה את התרשים שעבר סריאליזציה ל-URI של תמונה. קוראים לפונקציה אחרי הצגת התרשים. ראו הדפסת תרשימי PNG. סוג החזרה: מחרוזת
|
getSelection() |
מחזירה מערך של ישויות התרשים שנבחרו.
עבור התרשים הזה, ניתן לבחור רק ישות אחת בכל רגע נתון.
סוג החזרה: מערך של רכיבי בחירה
|
getVAxisValue(yPosition, optional_axis_index) |
מחזירה את ערך הנתונים האנכיים ב- דוגמה: קוראים לפונקציה אחרי הצגת התרשים. סוג החזרה: מספר
|
getXLocation(dataValue, optional_axis_index) |
הפונקציה מחזירה את קואורדינטת ה-x של דוגמה: קוראים לפונקציה אחרי הצגת התרשים. סוג החזרה: מספר
|
getYLocation(dataValue, optional_axis_index) |
הפונקציה מחזירה את קואורדינטת ה-y של דוגמה: קוראים לפונקציה אחרי הצגת התרשים. סוג החזרה: מספר
|
removeAction(actionID) |
הסרה של פעולת ההסבר הקצר עם ה- סוג החזרה:
none |
setAction(action) |
הגדרת פעולת הסבר קצר שתבוצע כשהמשתמש ילחץ על הטקסט של הפעולה.
ה-method
צריך להגדיר את כל הפעולות של ההסבר הקצר לפני קריאה ל-method של סוג החזרה:
none |
setSelection() |
בחירת ישויות התרשים שצוינו. ביטול הבחירה הקודמת.
בתרשים הזה ניתן לבחור רק ישות אחת בכל פעם.
סוג החזרה: ללא
|
clearChart() |
ניקוי התרשים וכל המשאבים שהוקצו לו. סוג החזרה: ללא
|
אירועים
מידע נוסף על אופן השימוש באירועים האלה זמין במאמרים אינטראקטיביות בסיסית, טיפול באירועים והפעלת אירועים.
שם | |
---|---|
animationfinish |
מופעל כשאנימציית המעבר מסתיימת. מאפיינים:ללא
|
click |
מופעל כשהמשתמש לוחץ על התרשים. יכול לשמש כדי לזהות מתי לוחצים על הכותרת, רכיבי הנתונים, רשומות המקרא, הצירים, קווי הרשת או התוויות. נכסים: targetID
|
error |
מופעל כשמתרחשת שגיאה בניסיון לעבד את התרשים. מאפיינים: מזהה, הודעה
|
legendpagination |
מופעל כשהמשתמש לוחץ על חיצי העימוד של המקרא. מחזיר את אינדקס הדפים הנוכחי המבוסס על אפס ואת מספר הדפים הכולל. מאפיינים: currentPageIndex, total Pages
|
onmouseover |
מופעל כשהמשתמש מעביר את העכבר מעל ישות חזותית. מחזיר את האינדקסים של השורה והעמודה של הרכיב התואם בטבלת הנתונים. מאפיינים: שורה, עמודה
|
onmouseout |
מופעל כשהמשתמש מזיז את העכבר מישות חזותית. מחזיר את האינדקסים של השורה והעמודה של הרכיב התואם בטבלת הנתונים. מאפיינים: שורה, עמודה
|
ready |
התרשים מוכן לקריאות method חיצוניות. כדי לבצע אינטראקציה עם התרשים, ושל שיטות קריאה אחרי שרטוט, צריך להגדיר האזנה לאירוע הזה לפני
שמפעילים את ה-method מאפיינים:ללא
|
select |
מופעל כשהמשתמש לוחץ על ישות חזותית. כדי לבדוק אילו קבוצות נבחרו, אפשר להתקשר למספר
מאפיינים:ללא
|
המדיניות בנושא נתונים
כל הקוד והנתונים מעובדים ומעובדים בדפדפן. לא נשלחים נתונים לאף שרת.