Tworzenie wizualizacji w Studiu danych za pomocą niestandardowego kodu JavaScript

Studio danych Google umożliwia użytkownikom bezpłatne tworzenie interaktywnych paneli z atrakcyjnymi wizualizacjami danych. Użytkownicy mogą pobierać dane z różnych źródeł i tworzyć raporty w Studiu danych, korzystając z pełnych możliwości edycji i udostępniania. Przykładowy panel Studia danych:

(Kliknij tutaj, aby wyświetlić ten przykładowy raport w Studio danych)

Data Studio udostępnia kilka wbudowanych typów wykresów, w tym wykresy liniowe, słupkowe, kołowe i punktowe. Wizualizacje utworzone przez społeczność umożliwiają tworzenie i używanie w Studiu danych własnych wizualizacji niestandardowych w JavaScript. Wizualizacje utworzone przez społeczność są tworzone przez społeczność programistów Data Studio – każdy programista może je tworzyć. Możesz też udostępniać wizualizacje społeczności innym użytkownikom, aby mogli ich używać z własnymi danymi.

Czego się nauczysz

W tym module dowiesz się:

  • Jak działa wizualizacja utworzona przez społeczność w Studiu danych Google
  • Jak utworzyć wizualizację utworzoną przez społeczność za pomocą biblioteki pomocniczej ds-component
  • Jak zintegrować wizualizację utworzoną przez społeczność z panelem Studia danych

Czego potrzebujesz

Aby ukończyć to ćwiczenie, potrzebujesz:

  • dostęp do internetu i przeglądarki;
  • konto Google,
  • Dostęp do zasobnika Google Cloud Platform
  • Znajomość JavaScriptu

Dlaczego wybierasz ten codelab?

Interesuje mnie wizualizacja danych w ogóle. Chcę dowiedzieć się więcej o Studiu danych Chcę utworzyć własną wizualizację utworzoną przez społeczność Próbuję zintegrować Studio danych z inną platformą. Interesują mnie rozwiązania Google Cloud.

Jak zamierzasz korzystać z tego laboratorium/samouczka?

Tylko przejrzyj Przeczytaj i wykonaj ćwiczenia

Jak oceniasz korzystanie ze Studia danych?

Nigdy o niej nie słyszałem(-am). Wiem, co to jest, ale nie używam tej funkcji. Korzystam z niej od czasu do czasu. Używam go regularnie. Jestem zaawansowanym użytkownikiem.

Które z poniższych stwierdzeń najlepiej opisuje Twoje doświadczenie?

Programista Projektant / specjalista ds. UX Analityk biznesowy / danych / finansowy Badacz danych / inżynier danych Ekspert ds. marketingu / mediów społecznościowych / analityki cyfrowej Inne

Jakie biblioteki wizualizacji JavaScript Cię interesują?

D3.js Wykresy Google Chart.js Leaflet Highcharts Plot.ly Inne

Aby przesłać informacje z ankiety, przejdź na następną stronę.

Wizualizacje utworzone przez społeczność w Studiu danych umożliwiają tworzenie i używanie niestandardowych wizualizacji w JavaScript, które można zintegrować z panelami.

W tym samouczku utworzysz wizualizację społeczności w postaci wykresu słupkowego, która obsługuje 1 wymiar, 1 rodzaj danych i styl koloru słupków.

Aby utworzyć wizualizację społecznościową, musisz mieć w zasobniku Google Cloud Platform te pliki, które utworzysz w późniejszym kroku:

Nazwa pliku

Typ pliku

Cel

manifest.json*

JSON

Zawiera metadane wizualizacji i lokalizację innych zasobów.

myViz.json

JSON

Udostępnia opcje konfiguracji danych i stylu w panelu Usługa.

myViz.js

JavaScript

Zawiera kod JavaScript wymagany do wyświetlania wizualizacji.

myViz.css (opcjonalnie)

CSS

Określa styl wizualizacji.

*Manifest to jedyny plik, który musi mieć określoną nazwę. Pozostałe pliki mogą mieć inne nazwy, o ile ich nazwa lub lokalizacja jest określona w pliku manifestu.

W tej sekcji dodasz do pliku JavaScript kod wymagany do obsługi danych, zmian stylu i renderowania wizualizacji.

Tworzenie źródła wizualizacji

Krok 1. Pobierz plik dscc.min.js z Biblioteki komponentów społeczności Data Studio i skopiuj go do katalogu roboczego.

Krok 2. Skopiuj ten kod do edytora tekstu i zapisz go jako myVizSource.js w lokalnym katalogu roboczym.

myVizSource.js

function drawViz(data) {

  // set margins + canvas size
  const margin = { top: 10, bottom: 50, right: 10, left: 10 };
  const height = dscc.getHeight() - margin.top - margin.bottom;
  const width = dscc.getWidth() - margin.left - margin.right;

  // remove the svg if it already exists
  if (document.querySelector("svg")) {
    let oldSvg = document.querySelector("svg");
    oldSvg.parentNode.removeChild(oldSvg);
  }

  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  svg.setAttribute("height", `${height}px`);
  svg.setAttribute("width", `${width}px`);

  const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
  rect.setAttribute('width', `${width/2}px`);
  rect.setAttribute('height', `${height/2}px`);
  rect.style.fill =  'blue';

  svg.append(rect);

  document.body.appendChild(svg);
}
// subscribe to data and style changes
dscc.subscribeToData(drawViz, { transform: dscc.objectTransform });

Przygotowywanie końcowego pliku JavaScript

Krok 3. Połącz wszystkie wymagane pliki JavaScript w jeden plik, kopiując zawartość biblioteki pomocniczej wizualizacji (dscc.min.js) i pliku myVizSource.js do nowego pliku o nazwie myViz.js. Aby połączyć pliki, uruchom te polecenia. Powtarzaj ten krok za każdym razem, gdy aktualizujesz kod wizualizacji.

Skrypt łączenia w systemie Linux/Mac OS

cat dscc.min.js > myViz.js
echo >> myViz.js
cat myVizSource.js >> myViz.js

Skrypt Windows

del myViz.js
type nul > myViz.js
type dscc.min.js >> myViz.js
echo.>> myViz.js
type myVizSource.js >> myViz.js

Plik CSS określa styl wizualizacji. Skopiuj ten kod i zapisz go jako myViz.css..

myViz.css

#myVizTitle {
  color: black;
  font-size: 24px;
  text-align: center;
  margin: 0 auto;
}

Plik JSON konfiguracji wizualizacji określa atrybuty danych i stylu, które są obsługiwane i wymagane przez wizualizację. Wizualizacja, którą utworzysz w tym ćwiczeniu, obsługuje 1 wymiar i 1 rodzaj danych oraz wymaga 1 elementu stylu do wyboru koloru. Więcej informacji o wymiarach i danych

Skopiuj poniższy kod i zapisz go jako myViz.json.Więcej informacji o właściwościach, które możesz skonfigurować, znajdziesz w dokumentacji konfiguracji.

myViz.json

{
  "data": [
    {
      "id": "concepts",
      "label": "Concepts",
      "elements": [
        {
          "id": "barDimension",
          "label": "Dimension",
          "type": "DIMENSION",
          "options": {
            "min": 1,
            "max": 1
          }
        },
        {
          "id": "barMetric",
          "label": "Metric",
          "type": "METRIC",
          "options": {
            "min": 1,
            "max": 1
          }
        }
      ]
    }
  ],
  "style": [
    {
      "id": "color",
      "label": "Colors",
      "elements": [
        {
          "type": "FONT_COLOR",
          "id": "barColor",
          "label": "Bar Color",
          "defaultValue": "black"
        }
      ]
    }
  ]
}

Krok 1. Utwórz projekt Google Cloud Platform (GCP)

Krok 2. Utwórz zasobnik GCP. Zalecana klasa pamięci to Regional. Szczegółowe informacje o bezpłatnych limitach znajdziesz w cenniku Cloud Storage. Jest mało prawdopodobne, że w przypadku klasy pamięci regionalnej przechowywanie wizualizacji będzie generować jakiekolwiek koszty.

Krok 3. Zapisz nazwę lub ścieżkę zasobnika, zaczynając od sekcji po Buckets/. Studio danych nazywa to „identyfikatorem komponentu”, który będzie używany do identyfikacji i wdrażania.

Plik manifestu zawiera informacje o lokalizacji wizualizacji i zasobach. Musi mieć nazwę „manifest.json” i znajdować się w zasobniku utworzonym w poprzednim kroku (tym samym, który został użyty w przypadku identyfikatora komponentu).

Skopiuj ten kod do edytora tekstu i zapisz go jako manifest.json.

Więcej informacji o pliku manifestu znajdziesz w dokumentacji informacji o pliku manifestu.

manifest.json

{
  "name": "Community Visualization",
  "logoUrl": "https://raw.githubusercontent.com/googledatastudio/community-visualizations/master/docs/codelab/img/bar_chart.png",
  "organization": "Data Studio Codelab",
  "supportUrl": "https://url",
  "packageUrl": "https://url",
  "privacyPolicyUrl": "https://url",
  "description": "Community Visualization Codelab",
  "devMode": true,
  "components": [{
    "id": "barChart",
    "name": "Bar Chart",
    "iconUrl": "https://raw.githubusercontent.com/googledatastudio/community-visualizations/master/docs/codelab/img/bar_chart.png",
    "description": "Bar chart written in d3.js",
    "resource": {
      "js": "MY_GOOGLE_CLOUD_STORAGE_BUCKET/myViz.js",
      "config": "MY_GOOGLE_CLOUD_STORAGE_BUCKET/myViz.json",
      "css": "MY_GOOGLE_CLOUD_STORAGE_BUCKET/myViz.css"
    }
  }]
}
  1. Prześlij pliki manifest.json, myViz.js, myViz.jsonmyViz.css do zasobnika Google Cloud Storage za pomocą interfejsu internetowego lub narzędzia wiersza poleceń gsutil. Powtarzaj tę czynność za każdym razem, gdy aktualizujesz wizualizację.

Polecenia przesyłania gsutil

gsutil cp -a public-read manifest.json gs://MY_GOOGLE_CLOUD_STORAGE_BUCKET
gsutil cp -a public-read myViz.* gs://MY_GOOGLE_CLOUD_STORAGE_BUCKET

Krok 1. Skopiuj adres URL przykładowego zbioru danych wizualizacji społecznościowej.

Krok 2. Otwórz Studio danych i w sekcji Utwórz nowy raport kliknij Pusty.

Krok 3. W prawym dolnym rogu kliknij UTWÓRZ NOWE ŹRÓDŁO DANYCH.

Krok 4. Wybierz łącznik Arkusze Google.

Krok 5. W polu URL wpisz adres URL arkusza Google z kroku 1.

Krok 6. W prawym górnym rogu strony kliknij POŁĄCZ.

Krok 7. W nagłówku źródła danych kliknij Dostęp do wizualizacji utworzonych przez społeczność, wybierz WŁĄCZONY i kliknij Zapisz.

Krok 7. W wyświetlonym polu kliknij DODAJ DO RAPORTU, aby dodać źródło danych do raportu.

Krok 6. Na pasku narzędzi kliknij przycisk wizualizacji społeczności . Otworzy się menu.

Krok 7. Wklej nazwę zasobnika z prefiksem gs:// (, np. gs://community-viz-docs/myViz), w polu tekstowym „Ścieżka pliku manifestu”, dodaj barChart w sekcji „Identyfikator komponentu” i kliknij „DODAJ”.

Wizualizacja zostanie automatycznie narysowana na obszarze roboczym. Panel właściwości po prawej stronie powinien odzwierciedlać elementy w pliku myViz.json.

Wizualizacja umożliwia użycie 1 wymiaru i 1 rodzaju danych.

Określono 1 element stylu – renderowanie selektora koloru czcionki z etykietą „Kolor paska”. W następnym kroku użyjesz tego selektora, aby wpłynąć na wizualizację.

W tej sekcji użyjesz elementu stylu selektora kolorów, aby zaktualizować wizualizację.

Krok 1. Zastąp kod w pliku myVizSource.js kodem poniżej.

myVizSource.js

function drawViz(data) {

  // set margins + canvas size
  const margin = { top: 10, bottom: 50, right: 10, left: 10 };
  const height = dscc.getHeight() - margin.top - margin.bottom;
  const width = dscc.getWidth() - margin.left - margin.right;

  // remove the svg if it already exists
  if (document.querySelector("svg")) {
    let oldSvg = document.querySelector("svg");
    oldSvg.parentNode.removeChild(oldSvg);
  }

  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  svg.setAttribute("height", `${height}px`);
  svg.setAttribute("width", `${width}px`);

  const fillColor =  data.style.barColor.value
  ? data.style.barColor.value.color
  : data.style.barColor.defaultValue;

  const rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
  rect.setAttribute('width', `${width/2}px`);
  rect.setAttribute('height', `${height/2}px`);
  rect.style.fill =  fillColor;
  svg.append(rect);

  document.body.appendChild(svg);
}
// subscribe to data and style changes
dscc.subscribeToData(drawViz, { transform: dscc.objectTransform });

Krok 2. Utwórz połączony plik JavaScript, a następnie prześlij ponownie pliki wizualizacji do Google Cloud Storage.

Krok 3. Odśwież raport w Studio danych, w którym testujesz wizualizację utworzoną przez społeczność.

Kolor prostokąta możesz zmienić za pomocą selektora w menu stylu.

W tej sekcji zaktualizujesz wizualizację, aby narysować wykres słupkowy na podstawie danych z przykładowego zbioru danych wizualizacji utworzonej przez społeczność. Uwaga: Studio danych zwraca do wizualizacji maksymalnie 2500 wierszy danych.

Krok 1. Zastąp kod w pliku myVizSource.js kodem poniżej.

myVizSource.js

function drawViz(data) {
  let rowData = data.tables.DEFAULT;

  // set margins + canvas size
  const margin = { top: 10, bottom: 50, right: 10, left: 10 };
  const padding = { top: 15, bottom: 15 };
  const height = dscc.getHeight() - margin.top - margin.bottom;
  const width = dscc.getWidth() - margin.left - margin.right;

  // remove the svg if it already exists
  if (document.querySelector("svg")) {
    let oldSvg = document.querySelector("svg");
    oldSvg.parentNode.removeChild(oldSvg);
  }

  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  svg.setAttribute("height", `${height}px`);
  svg.setAttribute("width", `${width}px`);

  const fillColor =  data.style.barColor.value
  ? data.style.barColor.value.color
  : data.style.barColor.defaultValue;

  const maxBarHeight = height - padding.top - padding.bottom;
  const barWidth = width / (rowData.length * 2);

  // obtain the maximum bar metric value for scaling purposes
  let largestMetric = 0;

  rowData.forEach(function(row) {
    largestMetric = Math.max(largestMetric, row["barMetric"][0]);
  });

  rowData.forEach(function(row, i) {
    // 'barDimension' and 'barMetric' come from the id defined in myViz.json
    // 'dimId' is Data Studio's unique field ID, used for the filter interaction
    const barData = {
      dim: row["barDimension"][0],
      met: row["barMetric"][0],
      dimId: data.fields["barDimension"][0].id
    };

    // calculates the height of the bar using the row value, maximum bar
    // height, and the maximum metric value calculated earlier
    let barHeight = Math.round((barData["met"] * maxBarHeight) / largestMetric);

    // normalizes the x coordinate of the bar based on the width of the convas
    // and the width of the bar
    let barX = (width / rowData.length) * i + barWidth / 2;

    // create the "bar"
    let rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
    rect.setAttribute("x", barX);
    rect.setAttribute("y", maxBarHeight - barHeight);
    rect.setAttribute("width", barWidth);
    rect.setAttribute("height", barHeight);
    rect.setAttribute("data", JSON.stringify(barData));
    rect.style.fill = fillColor;
    svg.appendChild(rect);

    // add text labels
    let text = document.createElementNS("http://www.w3.org/2000/svg", "text");
    let textX = barX + barWidth / 2;
    text.setAttribute("x", textX);
    text.setAttribute("text-anchor", "middle");
    let textY = maxBarHeight + padding.top;
    text.setAttribute("y", textY);
    text.setAttribute("fill", fillColor)
    text.innerHTML = barData["dim"];

    svg.appendChild(text);
  });

  document.body.appendChild(svg);
}

// subscribe to data and style changes
dscc.subscribeToData(drawViz, { transform: dscc.objectTransform });

Krok 2. Utwórz połączony plik JavaScript, a następnie prześlij ponownie pliki wizualizacji do Google Cloud Storage.

Krok 3. Odśwież raport w Studio danych, w którym testujesz wizualizację utworzoną przez społeczność. Powinien pojawić się wykres słupkowy z etykietami wygenerowanymi na podstawie danych z arkusza Google. Aby zmienić kolor słupków, zmień kolor wybrany w selektorze Styl „Kolor słupka”.

W tej sekcji zaktualizujesz wizualizację, aby narysować wykres słupkowy na podstawie danych z przykładowego zbioru danych wizualizacji utworzonej przez społeczność.

Krok 1. Zastąp kod w pliku myVizSource.js kodem poniżej.

myVizSource.js

// create a title element
var titleElement = document.createElement('div');
titleElement.id = 'myVizTitle';
document.body.appendChild(titleElement);

function drawViz(data) {
  let rowData = data.tables.DEFAULT;

  // set margins + canvas size
  const margin = { top: 10, bottom: 50, right: 10, left: 10 };
  const padding = { top: 15, bottom: 15 };
  const height = dscc.getHeight() - margin.top - margin.bottom;
  const width = dscc.getWidth() - margin.left - margin.right;

  const fillColor =  data.style.barColor.value
  ? data.style.barColor.value.color
  : data.style.barColor.defaultValue;

  // remove the svg if it already exists
  if (document.querySelector("svg")) {
    let oldSvg = document.querySelector("svg");
    oldSvg.parentNode.removeChild(oldSvg);
  }

  const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
  svg.setAttribute("height", `${height}px`);
  svg.setAttribute("width", `${width}px`);

  const maxBarHeight = height - padding.top - padding.bottom;
  const barWidth = width / (rowData.length * 2);

  // obtain the maximum bar metric value for scaling purposes
  let largestMetric = 0;

  rowData.forEach(function (row) {
    largestMetric = Math.max(largestMetric, row["barMetric"][0]);
  });

  rowData.forEach(function (row, i) {
    // 'barDimension' and 'barMetric' come from the id defined in myViz.json
    // 'dimId' is Data Studio's unique field ID, used for the filter interaction
    const barData = {
      dim: row["barDimension"][0],
      met: row["barMetric"][0],
      dimId: data.fields["barDimension"][0].id
    };

    // calculates the height of the bar using the row value, maximum bar
    // height, and the maximum metric value calculated earlier
    let barHeight = Math.round((barData["met"] * maxBarHeight) / largestMetric);

    // normalizes the x coordinate of the bar based on the width of the convas
    // and the width of the bar
    let barX = (width / rowData.length) * i + barWidth / 2;

    // create the "bar"
    let rect = document.createElementNS("http://www.w3.org/2000/svg", "rect");
    rect.setAttribute("x", barX);
    rect.setAttribute("y", maxBarHeight - barHeight);
    rect.setAttribute("width", barWidth);
    rect.setAttribute("height", barHeight);
    rect.setAttribute("data", JSON.stringify(barData));
    // use style selector from Data Studio
    rect.style.fill = fillColor;
    svg.appendChild(rect);

    // add text labels
    let text = document.createElementNS("http://www.w3.org/2000/svg", "text");
    let textX = barX + barWidth / 2;
    text.setAttribute("x", textX);
    text.setAttribute("text-anchor", "middle");
    let textY = maxBarHeight + padding.top;
    text.setAttribute("y", textY);
    text.setAttribute("fill", fillColor)
    text.innerHTML = barData["dim"];

    svg.appendChild(text);
  });

  document.body.appendChild(svg);

  // Get the human-readable name of the metric and dimension

  var metricName = data.fields['barMetric'][0].name;
  var dimensionName = data.fields['barDimension'][0].name;

  titleElement.innerText = metricName + ' by ' + dimensionName;

}

dscc.subscribeToData(drawViz, { transform: dscc.objectTransform });

Krok 2. Utwórz połączony plik JavaScript, a następnie prześlij ponownie pliki wizualizacji do Google Cloud Storage.

Krok 3. Odśwież raport w Studio danych, w którym testujesz wizualizację utworzoną przez społeczność. Powinien pojawić się wykres słupkowy z tytułem wygenerowanym na podstawie danych i sformatowanym za pomocą pliku myViz.css.

Gratulacje – udało Ci się utworzyć wizualizację utworzoną przez społeczność w Studiu danych. To już koniec tego ćwiczenia. Zobaczmy teraz, jakie możesz podjąć kolejne kroki.

Rozszerzanie wizualizacji

Więcej możliwości dzięki wizualizacjom utworzonym przez społeczność

Dodatkowe materiały

Poniżej znajdziesz różne zasoby, które pomogą Ci pogłębić informacje przedstawione w tym module.

Typ zasobu

Funkcje dla użytkowników

Funkcje dla programistów

Dokumentacja

Centrum pomocy

Dokumentacja dla programistów

Wiadomości i aktualności

Zarejestruj się w Studio danych > Ustawienia użytkownika.

Lista adresów e-mail deweloperów

Zadawanie pytań

Forum użytkowników

Stack Overflow [google-data-studio]

Forum dla programistów Studia danych

Filmy

Studio danych w YouTube

Już wkrótce

Przykłady

Galeria raportów

Repozytorium open source