Omówienie
Uwaga: JavaScript liczy miesiące, zaczynając od zera: styczeń to 0, 1 lutego, a 11 grudnia. Jeśli wykres kalendarzowy wydaje się odległy od miesiąca, to właśnie jest przyczyną problemu.
Wykres kalendarzowy to wizualizacja używana do przedstawiania aktywności w długim okresie, np. miesiącach lub latach. Są one szczególnie przydatne, gdy chcesz pokazać, jak pewne ilości zmieniają się w zależności od dnia tygodnia lub jak zmieniają się w czasie.
Wykres kalendarzowy może zostać znacząco zmieniony w przyszłych wersjach Listy przebojów Google.
Wykresy Kalendarza są renderowane w przeglądarce za pomocą SVG lub VML, w zależności od tego, co jest odpowiednie w przeglądarce użytkownika. Podobnie jak wszystkie wykresy Google, wykresy kalendarza wyświetlają etykietki, gdy użytkownik najedzie na dane. I przypisywanie udziału – nasz wykres kalendarzowy został zainspirowany wizualizacją kalendarza D3.
Prosty przykład
Załóżmy, że chcemy pokazać, jak frekwencja drużyny sportowej zmieniała się w trakcie sezonu. Na wykresie kalendarzowym możemy używać jasności, aby wskazywać wartości i umożliwiać użytkownikom szybkie dostrzeżenie trendów:
Możesz najeżdżać kursorem na poszczególne dni, aby zobaczyć wartości danych.
Aby utworzyć wykres kalendarzowy, wczytaj pakiet calendar
, a następnie utwórz 2 kolumny – jedną na daty i jedną na wartości. (Opcjonalna trzecia kolumna z niestandardowymi stylami będzie dostępna w przyszłej wersji Wykresów Google).
Następnie wypełnij wiersze parami data i wartość, jak pokazano poniżej.
<html> <head> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> google.charts.load("current", {packages:["calendar"]}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var dataTable = new google.visualization.DataTable(); dataTable.addColumn({ type: 'date', id: 'Date' }); dataTable.addColumn({ type: 'number', id: 'Won/Loss' }); dataTable.addRows([ [ new Date(2012, 3, 13), 37032 ], [ new Date(2012, 3, 14), 38024 ], [ new Date(2012, 3, 15), 38024 ], [ new Date(2012, 3, 16), 38108 ], [ new Date(2012, 3, 17), 38229 ], // Many rows omitted for brevity. [ new Date(2013, 9, 4), 38177 ], [ new Date(2013, 9, 5), 38705 ], [ new Date(2013, 9, 12), 38210 ], [ new Date(2013, 9, 13), 38029 ], [ new Date(2013, 9, 19), 38823 ], [ new Date(2013, 9, 23), 38345 ], [ new Date(2013, 9, 24), 38436 ], [ new Date(2013, 9, 30), 38447 ] ]); var chart = new google.visualization.Calendar(document.getElementById('calendar_basic')); var options = { title: "Red Sox Attendance", height: 350, }; chart.draw(dataTable, options); } </script> </head> <body> <div id="calendar_basic" style="width: 1000px; height: 350px;"></div> </body> </html>
Dni
Każdy kwadrat na wykresie kalendarzowym oznacza jeden dzień. Obecnie nie można dostosować koloru komórek danych, ale zmieni się to w kolejnej wersji wykresów Google.
Jeśli wszystkie wartości danych są dodatnie, kolory mają zakres od białego do niebieskiego, przy czym najgłębszy niebieski wskazuje najwyższe wartości. Jeśli występują wartości danych ujemne, będą miały kolor pomarańczowy, jak pokazano poniżej.
Kod tego kalendarza jest podobny do pierwszego z tą różnicą, że wiersze wyglądają tak:
[ new Date(2013, 9, 4), 10 ], [ new Date(2013, 9, 5), 3 ], [ new Date(2013, 9, 7), -1 ], [ new Date(2013, 9, 8), 2 ], [ new Date(2013, 9, 12), -1 ], [ new Date(2013, 9, 13), 1 ], [ new Date(2013, 9, 15), 1 ], [ new Date(2013, 9, 16), -4 ],
Wielkość dni („komórki”) możesz zmienić za pomocą opcji calendar.cellSize
:
Zmieniliśmy tutaj wartość calendar.cellSize
na 10, co spowoduje zmniejszenie liczby dni i w konsekwencji całego wykresu.
var options = { title: 'Red Sox Attendance', calendar: { cellSize: 10 }, };
Dni bez wartości danych można dostosować za pomocą opcji noDataPattern
:
W tym przykładzie ustawiamy kolor color
na jasnoniebieski, a backgroundColor
na nieco ciemniejszy odcień:
var options = { title: "Red Sox Attendance", height: 350, noDataPattern: { backgroundColor: '#76a7fa', color: '#a0c3ff' } };
Za pomocą calendar.cellColor
możesz kontrolować kolor i szerokość obramowania komórek oraz przezroczystość:
Musisz wybrać kolor konturu, który będzie odróżniał się od monthOutlineColor
, lub ustawić niską przezroczystość. W przypadku powyższego wykresu dostępne są te opcje:
var options = { title: 'Red Sox Attendance', height: 350, calendar: { cellColor: { stroke: '#76a7fa', strokeOpacity: 0.5, strokeWidth: 1, } } };
Gdy na wykresie powyżej wybierzesz dzień, jego obramowanie będzie zaznaczone na czerwono. Możesz sterować tym działaniem za pomocą opcji calendar.focusedCellColor
:
var options = { title: 'Red Sox Attendance', height: 350, calendar: { focusedCellColor: { stroke: '#d3362d', strokeOpacity: 1, strokeWidth: 1, } } };
Tygodnie
Dni tygodnia są domyślnie oznaczone pierwszymi literami od niedzieli do soboty.
Nie możesz zmienić kolejności dni, ale za pomocą opcji calendar.daysOfWeek
możesz zmienić używane litery. Za pomocą właściwości calendar.dayOfWeekRightSpace
możesz też kontrolować dopełnienie między dniami tygodnia a wykresem, a styl tekstu za pomocą właściwości calendar.dayOfWeekLabel
:
W tym miejscu zmieniamy czcionkę etykiet tygodnia, umieszczamy 10-pikselowe dopełnienie między etykietami a danymi na wykresie, a tydzień zaczyna się w poniedziałek.
var options = { title: 'Red Sox Attendance', height: 350, calendar: { dayOfWeekLabel: { fontName: 'Times-Roman', fontSize: 12, color: '#1a8763', bold: true, italic: true, }, dayOfWeekRightSpace: 10, daysOfWeek: 'DLMMJVS', } };
Miesiące
Domyślnie miesiące są oznaczone ciemnoszarymi liniami. Za pomocą opcji calendar.monthOutlineColor
możesz kontrolować obramowanie, calendar.monthLabel
do dostosowywania czcionki etykiety, a calendar.underMonthSpace
do dostosowywania dopełnienia etykiety:
Ustawiamy czcionkę etykiety na ciemnoczerwony 12-punktowy tekst Times-Roman, pogrubioną kursywę, ustawiliśmy ten sam kolor konturu i umieściliśmy dopełnienie o wysokości 16 pikseli. Nieużywane kontury miesiąca są ustawione na słabszy kolor z tym samym odcieniem.
var options = { title: 'Red Sox Attendance', height: 350, calendar: { monthLabel: { fontName: 'Times-Roman', fontSize: 12, color: '#981b48', bold: true, italic: true }, monthOutlineColor: { stroke: '#981b48', strokeOpacity: 0.8, strokeWidth: 2 }, unusedMonthOutlineColor: { stroke: '#bc5679', strokeOpacity: 0.8, strokeWidth: 1 }, underMonthSpace: 16, } };
Lata
Lata na wykresach w kalendarzu są zawsze widoczne po lewej stronie wykresu i można je dostosować za pomocą właściwości calendar.yearLabel
i calendar.underYearSpace
:
Ustawiamy czcionkę roku na ciemnozieloną 32-punktową kursywę Times-Roman i dodamy 10 pikseli między etykietami roku a dolną częścią wykresu:
var options = { title: 'Red Sox Attendance', height: 350, calendar: { underYearSpace: 10, // Bottom padding for the year labels. yearLabel: { fontName: 'Times-Roman', fontSize: 32, color: '#1A8763', bold: true, italic: true } } };
Wczytuję
Nazwa pakietu google.charts.load
to "calendar"
:
google.charts.load("current", {packages: ["calendar"]});
Nazwa klasy wizualizacji to google.visualization.Calendar
:
var visualization = new google.visualization.Calendar(container);
Format danych
Wiersze: każdy wiersz tabeli przedstawia datę.
Kolumny:
Kolumna 0 | Kolumna 1 | ... | Kolumna N (opcjonalna) | |
---|---|---|---|---|
Przeznaczenie: | Daty | Wartości | ... | Role opcjonalne |
Typ danych: | date, datetime lub timeofday | Liczba | ... | |
Rola: | domena | dane | ... | |
Opcjonalne role kolumny: | Brak |
Brak |
... |
Opcje konfiguracji
Nazwa | |
---|---|
calendar.cellColor |
Opcja var options = { calendar: { cellColor: { stroke: 'red', // Color the border of the squares. strokeOpacity: 0.5, // Make the borders half transparent. strokeWidth: 2 // ...and two pixels thick. } } }; Typ: obiekt
Wartość domyślna:
{ stroke: '#fff', strokeOpacity: 1, strokeWidth: 1 } |
calendar.cellSize |
Rozmiar kwadratów dni w kalendarzu: var options = { calendar: { cellSize: 10 } }; Typ: liczba całkowita
Wartość domyślna: 16
|
calendar.dayOfWeekLabel |
Określa styl czcionki etykiet tygodnia u góry wykresu: var options = { calendar: { dayOfWeekLabel: { fontName: 'Times-Roman', fontSize: 12, color: 'black', bold: false, italic: false } } }; Typ: obiekt
Domyślnie:
{ fontName: 'sans-serif', color: '#888', bold: false, italic: false }
|
calendar.dayOfWeekRightSpace |
Odległość między prawą krawędzią etykiet tygodnia a lewą krawędzią kwadratów dni na wykresie. Typ: liczba całkowita
Wartość domyślna: 4
|
calendar.daysOfWeek |
Jednoliterowe etykiety używane od niedzieli do soboty. Typ: ciąg znaków
Wartość domyślna:
'SMTWTFS' |
calendar.focusedCellColor |
Gdy użytkownik zaznaczy (na przykład po najechaniu kursorem) na kwadrat dzienny, na wykresach w kalendarzu zostanie on wyróżniony. var options = { calendar: focusedCellColor: { stroke: 'red', strokeOpacity: 0.8, strokeWidth: 3 } } }; Typ: obiekt
Wartość domyślna:
{ stroke: '#000', strokeOpacity: 1, strokeWidth: 2 } |
calendar.monthLabel |
Styl etykiet miesiąca, np.: var options = { calendar: { monthLabel: { fontName: 'Times-Roman', fontSize: 16, color: 'green', bold: true, italic: false } } }; Typ: obiekt
Domyślnie:
{ fontName: 'sans-serif', color: '#888', bold: false, italic: false }
|
calendar.monthOutlineColor |
Miesiące z wartościami danych są oddzielone od innych za pomocą obramowania w tym stylu. var options = { calendar: { monthOutlineColor: { stroke: 'blue', strokeOpacity: 0.8, strokeWidth: 2 } } };(Zobacz też: calendar.unusedMonthOutlineColor ).
Typ: obiekt
Wartość domyślna:
{ stroke: '#000', strokeOpacity: 1, strokeWidth: 1 } |
calendar.underMonthSpace |
Liczba pikseli między dolnymi etykietami miesiąca i górnymi kwadratami dnia: var options = { calendar: { underMonthSpace: 12 } }; Typ: liczba całkowita
Wartość domyślna: 6
|
calendar.underYearSpace |
Liczba pikseli między etykietą roku u dołu i u dołu wykresu: var options = { calendar: { underYearSpace: 2 } }; Typ: liczba całkowita
Wartość domyślna: 0
|
calendar.unusedMonthOutlineColor |
Miesiące bez wartości danych są oddzielone od innych za pomocą obramowania w tym stylu. var options = { calendar: { unusedMonthOutlineColor: { stroke: 'yellow', strokeOpacity: 0.8, strokeWidth: 2 } } };(Zobacz też: calendar.monthOutlineColor ).
Typ: obiekt
Domyślnie:
{ stroke: '#c9c9c9', strokeOpacity: 1, strokeWidth: 1 }
|
colorAxis |
Obiekt, który określa mapowanie między wartościami i kolorami w kolumnie koloru lub skalę gradientu. Aby określić właściwości tego obiektu, możesz użyć notacji literału obiektu, jak pokazano poniżej: {minValue: 0, colors: ['#FF0000', '#00FF00']} Typ: obiekt
Wartość domyślna:null
|
colorAxis.colors |
Kolory do przypisania do wartości w wizualizacji. Tablica ciągów tekstowych, w których każdy element jest ciągiem znaków koloru HTML, np. Typ: tablica ciągów kolorów
Wartość domyślna:null
|
colorAxis.maxValue |
Jeśli ta opcja jest dostępna, określa maksymalną wartość danych koloru wykresu. Wartości danych koloru o tej i wyższych wartościach będą renderowane jako ostatni kolor w zakresie Typ: liczba
Domyślnie: maksymalna wartość kolumny koloru w danych wykresu
|
colorAxis.minValue |
Jeśli ta opcja jest dostępna, określa minimalną wartość danych koloru wykresu. Wartości danych koloru o tej i niższych wartościach będą renderowane jako pierwszy kolor w zakresie Typ: liczba
Domyślnie: minimalna wartość kolumny koloru w danych wykresu
|
colorAxis.values |
Jeśli ta opcja jest dostępna, określa sposób powiązania wartości z kolorami. Każda wartość jest powiązana z odpowiednim kolorem w tablicy Typ: tablica liczb
Wartość domyślna:null
|
forceIFrame |
Rysuje wykres wewnątrz ramki wbudowanej. (Pamiętaj, że w IE8 ta opcja jest ignorowana – wszystkie wykresy w IE8 są rysowane w ramkach i-frame). Typ: wartość logiczna
Wartość domyślna: fałsz.
|
wysokość |
Wysokość wykresu w pikselach. Typ: liczba
Domyślna: wysokość elementu nadrzędnego.
|
noDataPattern |
Na wykresach w kalendarzu paskowane ukośne wzór oznacza, że nie ma danych z określonego dnia. Za pomocą opcji noDataPattern: { backgroundColor: '#76a7fa', color: '#a0c3ff' } Typ: obiekt
Wartość domyślna:null
|
tooltip.isHtml |
Aby używać etykiet wyrenderowanych w formacie SVG (a nie renderowanych przez HTML), ustaw wartość Uwaga: wizualizacje wykres kołowy i Wykres bąbelkowy nie obsługują dostosowywania zawartości etykietki HTML za pomocą roli danych kolumny etykietki. Typ: wartość logiczna
Wartość domyślna:true (prawda)
|
szerokość |
Szerokość wykresu w pikselach. Typ: liczba
Domyślna: szerokość elementu nadrzędnego.
|
Metody
Metoda | |
---|---|
draw(data, options) |
Rysuje wykres. Wykres akceptuje kolejne wywołania metod dopiero po wywołaniu zdarzenia Return Type: brak
|
getBoundingBox(id) |
Zwraca obiekt zawierający lewo, górę, szerokość i wysokość elementu wykresu
Wartości odnoszą się do kontenera wykresu. Wywołuj je po narysowaniu wykresu. Return Type: (Typ zwracania): obiekt
|
getSelection() |
Zwraca tablicę wybranych elementów wykresu.
Elementy, które można wybrać, to paski, wpisy z legendy i kategorie.
Słupek odpowiada komórce w tabeli danych, wpisowi w legendzie kolumnie (indeks wiersza ma wartość null) i kategorii wiersza (indeks kolumny ma wartość null).
Na tym wykresie w danym momencie można wybrać tylko 1 element.
Return Type: tablica elementów zaznaczenia.
|
setSelection() |
Wybiera określone elementy wykresu. Anuluje wcześniejszy wybór.
Elementy, które można wybrać, to paski, wpisy z legendy i kategorie.
Słupek odpowiada komórce w tabeli danych, wpisowi w legendzie kolumnie (indeks wiersza ma wartość null) i kategorii wiersza (indeks kolumny ma wartość null).
Na tym wykresie można wybrać tylko 1 element naraz.
Return Type: brak
|
clearChart() |
Czyści wykres i zwalnia wszystkie przydzielone Ci zasoby. Return Type: brak
|
Zdarzenia
Nazwa | |
---|---|
error |
Uruchamiane, gdy podczas próby wyrenderowania wykresu wystąpi błąd. Właściwości: identyfikator, komunikat
|
onmouseover |
Uruchamiane, gdy użytkownik najedzie kursorem na element wizualny. Zwraca indeks wiersza i wartość daty encji. Jeśli dla elementu nie ma elementu tabeli danych, zwracana wartość indeksu wiersza wynosi Właściwości: wiersz, data
|
onmouseout |
Uruchamiane, gdy użytkownik najedzie kursorem poza obiekt wizualny. Zwraca indeks wiersza i wartość daty encji. Jeśli element nie ma elementu tabeli danych, zwracana wartość indeksu wiersza wynosi Wiersz właściwości, data
|
ready |
Wykres jest gotowy do obsługi wywołań metod zewnętrznych. Jeśli chcesz korzystać z wykresu i metod wywołań po jego narysowaniu, skonfiguruj detektor 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 na żaden serwer.