Omówienie
VegaChart to jedna z wielu możliwych wizualizacji, które można utworzyć za pomocą gramatyki VigaVisual Grammar, która jest deklaratywnym językiem do tworzenia, zapisywania i udostępniania interaktywnych projektów wizualizacji. Vega pozwala opisać wygląd i interaktywne zachowanie wizualizacji w formacie JSON, a także generować widoki danych w internecie za pomocą obiektów Canvas lub SVG.
Podczas tworzenia wykresu Vega musisz w swoich opcjach zawrzeć specyfikację tworzenia wykresu w gramatyce wizualizacji Vega. Poniżej znajdziesz kilka przykładów takich specyfikacji, a kilka przykładów znajdziesz na stronie VegaChart Example.
Uwaga: chociaż wykres Google Charts Vega może rysować dowolny wykres, który można określić za pomocą specyfikacji Vega JSON (w tym wszystkie elementy w przykładowej galerii), dodatkowe funkcje wymagające wywołań interfejsu Vega API nie są jeszcze dostępne.
Prosty przykład: wykres słupkowy
Oto prosty przykład wykresu Vega, który rysuje wykres słupkowy. (Zapoznaj się z pierwotnym przykładem, szczegółowym samouczkiem i wykresem słupkowym w edytorze wykresów Vega).
Chociaż jest to kolejny sposób tworzenia wykresu słupkowego w Grafach Google, planujemy zintegrować wszystkie funkcje innych wykresów słupkowych i kolumn w ramach nowej implementacji na podstawie tego wykresu Vega.
W tym przykładzie opcja „data” jest zastąpiona poniższą, która używa „tabeli danych” podanej przez wywołanie rysowania jako „źródła” innego obiektu danych o nazwie „tabela”, a „tabela” jest używana w pozostałej specyfikacji 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>
Wczytuję
Nazwa pakietu google.charts.load
to "vegachart"
.
google.charts.load("current", {packages: ["vegachart"]});
Nazwa klasy wizualizacji to google.visualization.VegaChart
.
var visualization = new google.visualization.VegaChart(container);
Format danych
Dane można przekazywać do VegaChart w bardzo podobny sposób jak w przypadku innych wykresów Google, używając DataTable (lub DataView). Główną różnicą jest to, że niezależnie od kolejności użycia kolumn w celu określenia, jak są używane, VegaWykres korzysta z identyfikatora każdej kolumny i jest taki sam jak oczekiwany w przypadku określonej wizualizacji Vega.
Na przykład poniższą tabelę danych utworzono z kolumnami o identyfikatorach 'category'
i 'amount'
. Te same identyfikatory są używane w opcji „vega” do odwołania do tych kolumn.
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);
Jednak w ten sposób do usługi Vega Graph można przekazywać tylko jedną taką tabelę, podczas gdy niektóre wykresy Vega wymagają więcej niż 1 tabeli danych. W przyszłej wersji Listy przebojów Google wprowadzimy to ograniczenie.
Tymczasem możesz określić w polu 'vega'
'data'
wszelkie dodatkowe dane, których chcesz używać – przez wbudowanie go lub wczytanie z adresu URL.
Poniżej znajdziesz przykłady użycia obu tych metod.
Opcje konfiguracji
Nazwa | |
---|---|
obszarGraficzny |
Obiekt z użytkownikami do konfigurowania położenia i rozmiaru obszaru wykresu (tam, gdzie rysowany jest sam wykres, z wyłączeniem osi i legend). Obsługiwane są 2 formaty: liczba lub liczba, po której następuje %. Prosta liczba to wartość w pikselach. Liczba, po której następuje %, to wartość procentowa. Przykład: Typ: obiekt
Domyślne: null
|
wykresareny.dol |
Odległość, w jakiej należy narysować wykres od dolnej krawędzi. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
wykresArea.left |
Odległość, jaka ma być używana do rysowania wykresu od lewej krawędzi. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
wykresArea.right |
Odległość, jaka ma być używana do rysowania wykresu od prawej krawędzi. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
wykresArea.top |
Odległość, w jakiej znajduje się wykres od górnej krawędzi. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
chartArea.width |
Szerokość obszaru wykresu. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
wykresArea.height |
Wysokość obszaru wykresu. Typ: liczba lub ciąg
Ustawienie domyślne: automatyczne
|
wysokość |
Wysokość wykresu w pikselach. Typ: liczba
Domyślna: wysokość elementu, który go zawiera.
|
szerokość |
Szerokość wykresu w pikselach. Typ: liczba
Domyślna – szerokość elementu, który zawiera.
|
Metody
Metoda | |
---|---|
draw(data, options) |
Rysuje wykres. Wykres akceptuje dalsze wywołania metody dopiero po wywołaniu zdarzenia Typ zwrotu: brak
|
getAction(actionID) |
Zwraca obiekt działania etykietki z wymaganym parametrem Typ zwrotu: obiekt
|
getBoundingBox(id) |
Zwraca obiekt zawierający lewą, górną, szerokość i wysokość elementu wykresu
Wartości odnoszą się do kontenera wykresu. Wywołuj je po narysowaniu wykresu. Typ zwrotu: obiekt
|
getChartAreaBoundingBox() |
Zwraca obiekt zawierający lewą, górną, szerokość i wysokość zawartości wykresu (tzn. z wyłączeniem etykiet i legend):
Wartości odnoszą się do kontenera wykresu. Wywołuj je po narysowaniu wykresu. Typ zwrotu: obiekt
|
getChartLayoutInterface() |
Zwraca obiekt zawierający informacje o umieszczonym na ekranie miejscu na wykresie i jego elementach. W zwróconym obiekcie można wywołać te metody:
Wywołuj je po narysowaniu wykresu. Typ zwrotu: obiekt
|
getHAxisValue(xPosition, optional_axis_index) |
Zwraca poziomą wartość danych w miejscu Przykład: Wywołuj je po narysowaniu wykresu. Typ zwrotu: numer
|
getImageURI() |
Zwraca wykres zserializowany jako identyfikator URI obrazu. Wywołuj je po narysowaniu wykresu. Patrz Drukowanie wykresów PNG. Typ zwrotu: ciąg znaków
|
getSelection() |
Zwraca tablicę wybranych elementów wykresu.
Na tym wykresie w danym momencie możesz wybrać tylko 1 element.
Typ zwrotu: tablica elementów wyboru.
|
getVAxisValue(yPosition, optional_axis_index) |
Zwraca pionową wartość danych w miejscu Przykład: Wywołuj je po narysowaniu wykresu. Typ zwrotu: numer
|
getXLocation(dataValue, optional_axis_index) |
Zwraca współrzędną x piksela Przykład: Wywołuj je po narysowaniu wykresu. Typ zwrotu: numer
|
getYLocation(dataValue, optional_axis_index) |
Zwraca współrzędną Y piksela Przykład: Wywołuj je po narysowaniu wykresu. Typ zwrotu: numer
|
removeAction(actionID) |
Usuwa z wykresu etykietkę z żądaniem Typ zwrotu:
none |
setAction(action) |
Ustawia działanie etykietki do wykonania, gdy użytkownik kliknie tekst działania.
Metoda
Przed wywołaniem metody Typ zwrotu:
none |
setSelection() |
Zaznacza określone elementy wykresu. Anuluje poprzedni wybór.
Na tym wykresie możesz wybrać tylko jeden element naraz.
Typ zwrotu: brak
|
clearChart() |
Czyści wykres i usuwa wszystkie przydzielone zasoby. Typ zwrotu: brak
|
Zdarzenia
Więcej informacji o korzystaniu z tych zdarzeń znajdziesz w artykułach Podstawowe funkcje interaktywne, Obsługa zdarzeń i Uruchamianie zdarzeń.
Nazwa | |
---|---|
animationfinish |
Uruchamiane po zakończeniu animacji przejścia. Właściwości: brak
|
click |
Uruchamiane, gdy użytkownik kliknie wykres. Można jej użyć do określenia, kiedy kliknięty jest tytuł, elementy danych, wpisy legendy, osie, linie siatki lub etykiety. Właściwości: targetID
|
error |
Uruchamiane, gdy podczas próby renderowania wykresu wystąpi błąd. Właściwości: id, message
|
legendpagination |
Uruchamiane, gdy użytkownik kliknie legendę podziału na strony. Przekazuje aktualny indeks stron oparty na zerowej legendzie i łączną liczbę stron. Właściwości: currentPageIndex, totalPages
|
onmouseover |
Uruchamiane, gdy użytkownik najedzie kursorem na jednostkę wizualną. Zwraca indeksy wierszy i kolumn odpowiedniego elementu tabeli danych. Właściwości: wiersz, kolumna.
|
onmouseout |
Uruchamiane, gdy użytkownik odsunie kursor od jednostki wizualnej. Zwraca indeksy wierszy i kolumn odpowiedniego elementu tabeli danych. Właściwości: wiersz, kolumna.
|
ready |
Wykres jest gotowy do wywołań metod zewnętrznych. Jeśli chcesz korzystać z wykresu i metod wywoływania po narysowaniu, musisz skonfigurować odbiornik tego zdarzenia przed wywołaniem metody Właściwości: brak
|
select |
Uruchamiane, gdy użytkownik kliknie element wizualny. Aby dowiedzieć się, co zostało wybrane, zadzwoń pod numer
Właściwości: brak
|
Zasady dotyczące danych
Cały kod i dane są przetwarzane i renderowane w przeglądarce. Żadne dane nie są wysyłane do żadnego serwera.