Wskazówki: wprowadzenie
Etykietki to małe pola, które pojawiają się po najechaniu kursorem na element. (Karty informacyjne są bardziej ogólne i mogą pojawiać się w dowolnym miejscu na ekranie – etykietki są zawsze do siebie przypisane, np. kropka na wykresie rozproszonym lub słupek na wykresie słupkowym).
Z tej dokumentacji dowiesz się, jak tworzyć i dostosowywać podpowiedzi w Wykresach Google.
Określanie typu etykietki
Funkcja Wykresy Google automatycznie tworzy etykietki dla wszystkich wykresów podstawowych.
Domyślnie są one renderowane jako SVG z wyjątkiem przeglądarki IE 8, w której są renderowane jako VML. W etykietach podstawowych możesz tworzyć etykietki HTML, określając wartość tooltip.isHtml: true
w opcjach wykresów przekazywanych do wywołania draw(), które umożliwiają również tworzenie działań podpowiedzi.
Standardowe etykietki
W przypadku braku treści niestandardowych etykietka jest generowana automatycznie na podstawie danych bazowych. Aby ją wyświetlić, najedź kursorem na dowolny słupek na wykresie.
Dostosowywanie treści etykietki
W tym przykładzie dodajemy etykietki do etykietek, dodając nową kolumnę do tabeli danych i oznaczając ją rolą etykietki.
Uwaga: wizualizacja wykresu bąbelkowego nie jest obsługiwana.
google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var dataTable = new google.visualization.DataTable(); dataTable.addColumn('string', 'Year'); dataTable.addColumn('number', 'Sales'); // A column for custom tooltip content dataTable.addColumn({type: 'string', role: 'tooltip'}); dataTable.addRows([ ['2010', 600,'$600K in our first year!'], ['2011', 1500, 'Sunspot activity made this our best year ever!'], ['2012', 800, '$800K in 2012.'], ['2013', 1000, '$1M in sales last year.'] ]); var options = { legend: 'none' }; var chart = new google.visualization.ColumnChart(document.getElementById('tooltip_action')); chart.draw(dataTable, options); }
Używanie etykiet HTML
Ten przykład jest oparty na poprzedniej, włączając etykiety HTML. Zwróć uwagę na dodanie tooltip.isHtml: true
do opcji wykresu.
google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); function drawChart() { var dataTable = new google.visualization.DataTable(); dataTable.addColumn('string', 'Year'); dataTable.addColumn('number', 'Sales'); // A column for custom tooltip content dataTable.addColumn({type: 'string', role: 'tooltip'}); dataTable.addRows([ ['2010', 600,'$600K in our first year!'], ['2011', 1500, 'Sunspot activity made this our best year ever!'], ['2012', 800, '$800K in 2012.'], ['2013', 1000, '$1M in sales last year.'] ]); var options = { tooltip: {isHtml: true}, legend: 'none' }; var chart = new google.visualization.ColumnChart(document.getElementById('col_chart_html_tooltip')); chart.draw(dataTable, options); }
Niewiele się zmieniło, ale teraz możemy dostosować kod HTML.
Dostosowywanie treści HTML
We wszystkich poprzednich przykładach wszystkie były używane w formie zwykłego tekstu, ale w przypadku etykiet HTML istnieje możliwość ich dostosowania za pomocą znaczników HTML. Aby to zrobić, musisz wykonać 2 czynności:
-
Podaj
tooltip.isHtml: true
w opcjach wykresu. Dzięki temu wykres zawiera etykietki w formacie HTML (a nie SVG). -
Oznacz całą kolumnę lub konkretną komórkę w tabeli danych właściwością niestandardową
html
. Kolumna danych z rolą etykietki i właściwością HTML będzie wyglądać tak:dataTable.addColumn({'type': 'string', 'role': 'tooltip', 'p': {'html': true}})
Uwaga: nie działa to w przypadku wizualizacji Wykresu bąbelkowego. Nie można dostosować zawartości etykiet HTML wykresu bąbelkowego.
Ważne: kod HTML etykietki powinien pochodzić z zaufanego źródła.
Jeśli niestandardowa treść HTML zawiera jakiekolwiek treści użytkowników, znaczenie jej jest bez znaczenia. W przeciwnym razie atrakcyjne wizualizacje mogą być podatne na ataki XSS.
W tym celu wystarczy dodać tag <img>
lub pogrubić tekst:
Niestandardowe treści HTML mogą też zawierać treści generowane dynamicznie. Dodajemy tu etykietkę zawierającą dynamicznie generowaną tabelę dla każdej wartości kategorii. Etykietka jest dołączona do wartości wiersza, dlatego po najechaniu na dowolny słupek pojawi się etykietka HTML.
Ten przykład pokazuje, jak można dodać niestandardową etykietkę HTML do kolumny domeny. (w poprzednich przykładach była dołączona do kolumny danych). Aby włączyć etykietkę na osi domeny, ustaw opcję focusTarget: 'category'
.
function drawChart() { var dataTable = new google.visualization.DataTable(); dataTable.addColumn('string', 'Country'); // Use custom HTML content for the domain tooltip. dataTable.addColumn({'type': 'string', 'role': 'tooltip', 'p': {'html': true}}); dataTable.addColumn('number', 'Gold'); dataTable.addColumn('number', 'Silver'); dataTable.addColumn('number', 'Bronze'); dataTable.addRows([ ['USA', createCustomHTMLContent('https://upload.wikimedia.org/wikipedia/en/a/a4/Flag_of_the_United_States.svg', 46, 29, 29), 46, 29, 29], ['China', createCustomHTMLContent('https://upload.wikimedia.org/wikipedia/commons/f/fa/Flag_of_the_People%27s_Republic_of_China.svg', 38, 27, 23), 38, 27, 23], ['UK', createCustomHTMLContent('https://upload.wikimedia.org/wikipedia/commons/a/ae/Flag_of_the_United_Kingdom.svg', 29, 17, 19), 29, 17, 19] ]); var options = { title: 'London Olympics Medals', colors: ['#FFD700', '#C0C0C0', '#8C7853'], // This line makes the entire category's tooltip active. focusTarget: 'category', // Use an HTML tooltip. tooltip: { isHtml: true } }; // Create and draw the visualization. new google.visualization.ColumnChart(document.getElementById('custom_html_content_div')).draw(dataTable, options); } function createCustomHTMLContent(flagURL, totalGold, totalSilver, totalBronze) { return '<div style="padding:5px 5px 5px 5px;">' + '<img src="' + flagURL + '" style="width:75px;height:50px"><br/>' + '<table class="medals_layout">' + '<tr>' + '<td><img src="https://upload.wikimedia.org/wikipedia/commons/1/15/Gold_medal.svg" style="width:25px;height:25px"/></td>' + '<td><b>' + totalGold + '</b></td>' + '</tr>' + '<tr>' + '<td><img src="https://upload.wikimedia.org/wikipedia/commons/0/03/Silver_medal.svg" style="width:25px;height:25px"/></td>' + '<td><b>' + totalSilver + '</b></td>' + '</tr>' + '<tr>' + '<td><img src="https://upload.wikimedia.org/wikipedia/commons/5/52/Bronze_medal.svg" style="width:25px;height:25px"/></td>' + '<td><b>' + totalBronze + '</b></td>' + '</tr>' + '</table>' + '</div>'; }
Podpowiedzi dotyczące rotacji
Etykietki w Wykresach Google można wyświetlać przy użyciu CSS. Na wykresie poniżej etykietki są obrócone w prawo o 30° za pomocą tego wbudowanego arkusza CSS bezpośrednio przed elementem div wykresu:
<style>div.google-visualization-tooltip { transform: rotate(30deg); }</style>