Library Python Sumber Data

Google telah menjadikan library Python sebagai open source yang membuat objek DataTable untuk digunakan oleh visualisasi. Library ini dapat digunakan untuk membuat DataTable di Python, dan menghasilkannya dalam salah satu dari tiga format:

  • String JSON - Jika Anda menghosting halaman yang menghosting visualisasi yang menggunakan data Anda, Anda dapat membuat string JSON untuk diteruskan ke konstruktor DataTable untuk mengisinya.
  • Respons JSON -- Jika tidak menghosting halaman yang menghosting visualisasi, dan hanya ingin bertindak sebagai sumber data untuk visualisasi eksternal, Anda dapat membuat string respons JSON lengkap yang dapat ditampilkan sebagai respons atas permintaan data.
  • String JavaScript -- Anda dapat membuat output tabel data sebagai string yang terdiri dari beberapa baris kode JavaScript yang akan membuat dan mengisi objek google.visualization.DataTable dengan data dari tabel Python Anda. Selanjutnya, Anda dapat menjalankan JavaScript ini di mesin untuk membuat dan mengisi objek google.visualization.DataTable. Ini biasanya digunakan hanya untuk proses debug.

Dokumen ini mengasumsikan bahwa Anda memahami pemrograman Python dasar, dan telah membaca dokumentasi visualisasi pengantar untuk membuat visualisasi dan menggunakan visualisasi.

Daftar Isi

Cara Menggunakan Library

Berikut adalah langkah-langkah dasar, secara lebih detail:

1. Membuat objek gviz_api.DataTable

Impor library gviz_api.py dari link di atas dan buat instance class gviz_api.DataTable. Class ini mengambil dua parameter: skema tabel, yang akan menjelaskan format data dalam tabel, dan data opsional untuk mengisi tabel. Anda dapat menambahkan data nanti, jika mau, atau sepenuhnya menimpa data, tetapi tidak dapat menghapus baris satu per satu, atau menghapus skema tabel.

2. Jelaskan skema tabel Anda

Skema tabel ditentukan oleh parameter table_description yang diteruskan ke konstruktor. Anda tidak dapat mengubahnya nanti. Skema ini menjelaskan semua kolom dalam tabel: jenis data setiap kolom, ID, dan label opsional.

Setiap kolom dijelaskan oleh tuple: (ID [,data_type [,label [,custom_properties]]]).

  • ID - ID string yang digunakan untuk mengidentifikasi kolom. Dapat menyertakan spasi. ID untuk setiap kolom harus unik.
  • data_type - [opsional] Deskripsi string dari jenis data Python data di kolom tersebut. Anda dapat menemukan daftar jenis data yang didukung dalam metode SingleValueToJS(). Contohnya meliputi "string" dan "boolean". Jika tidak ditentukan, defaultnya adalah "string".
  • label - Nama kolom yang mudah digunakan, yang mungkin ditampilkan sebagai bagian dari visualisasi. Jika tidak ditentukan, nilai ID akan digunakan.
  • custom_properties - Kamus {String:String} dari properti kolom kustom.

Skema tabel adalah kumpulan tuple deskriptor kolom. Setiap anggota daftar, kunci kamus, atau nilai kamus harus berupa koleksi lain atau tuple deskriptor. Anda dapat menggunakan kombinasi kamus atau daftar, tetapi setiap kunci, nilai, atau anggota nantinya harus mengevaluasi ke tuple deskriptor. Berikut beberapa contohnya.

  • Daftar kolom: [('a', 'number'), ('b', 'string')]
  • Kamus daftar: {('a', 'number'): [('b', 'number'), ('c', 'string')]}
  • Kamus kamus: {('a', 'number'): {'b': 'number', 'c': 'string'}}
  • Dan seterusnya, dengan tingkatan bertingkat.

3. Mengisi data Anda

Untuk menambahkan data ke tabel, buat struktur elemen data dalam struktur yang sama persis dengan skema tabel. Jadi, misalnya, jika skema Anda adalah daftar, data harus berupa daftar:

  • schema: [("warna", "string"), ("bentuk", "string")]
  • data: [["biru", "persegi"], ["merah", "lingkaran"]]

Jika skema adalah kamus, data harus berupa kamus:

  • schema: {("namarow", "string"): [("color", "string"), ("Shape", "string")] }
  • data: {"row1": ["blue", "square"], "row2": ["red", "lingkaran"]}

Satu baris tabel adalah bagian dari data dan skema yang sesuai. Misalnya, berikut adalah cara skema daftar dua kolom diterapkan ke dua baris data.

Schema:[(color),(shape)]
            /     \       
Data: [["blue", "square"], ["red", "circle"]]

Table: 
      Color    Shape
      blue     square
      red      circle

Perhatikan bahwa kunci kamus di sini bernilai data kolom. Anda dapat menemukan contoh yang lebih kompleks dalam dokumentasi metode LampiranData() dalam kode. Tujuan mengizinkan pembuatan bertingkat yang rumit tersebut adalah untuk memungkinkan Anda menggunakan struktur data Python yang sesuai dengan kebutuhan Anda.

4. Menghasilkan output data

Format output yang paling umum adalah JSON, sehingga Anda mungkin akan menggunakan fungsi ToJsonResponse() untuk membuat data yang akan ditampilkan. Namun, jika Anda menguraikan permintaan input dan mendukung format output yang berbeda, Anda dapat memanggil salah satu metode output lain untuk menampilkan format lain, termasuk nilai yang dipisahkan koma, nilai yang dipisahkan tab, dan JavaScript. JavaScript biasanya hanya digunakan untuk proses debug. Lihat Mengimplementasikan Sumber Data untuk mempelajari cara memproses permintaan untuk mendapatkan format respons yang disukai.

Contoh Penggunaan

Berikut beberapa contoh yang menunjukkan cara menggunakan berbagai format output.

Contoh ToJSon dan ToJS

#!/usr/bin/python

import gviz_api

page_template = """
<html>
  <script src="https://www.gstatic.com/charts/loader.js"></script>
  <script>
    google.charts.load('current', {packages:['table']});

    google.charts.setOnLoadCallback(drawTable);
    function drawTable() {
      %(jscode)s
      var jscode_table = new google.visualization.Table(document.getElementById('table_div_jscode'));
      jscode_table.draw(jscode_data, {showRowNumber: true});

      var json_table = new google.visualization.Table(document.getElementById('table_div_json'));
      var json_data = new google.visualization.DataTable(%(json)s, 0.6);
      json_table.draw(json_data, {showRowNumber: true});
    }
  </script>
  <body>
    <H1>Table created using ToJSCode</H1>
    <div id="table_div_jscode"></div>
    <H1>Table created using ToJSon</H1>
    <div id="table_div_json"></div>
  </body>
</html>
"""

def main():
  # Creating the data
  description = {"name": ("string", "Name"),
                 "salary": ("number", "Salary"),
                 "full_time": ("boolean", "Full Time Employee")}
  data = [{"name": "Mike", "salary": (10000, "$10,000"), "full_time": True},
          {"name": "Jim", "salary": (800, "$800"), "full_time": False},
          {"name": "Alice", "salary": (12500, "$12,500"), "full_time": True},
          {"name": "Bob", "salary": (7000, "$7,000"), "full_time": True}]

  # Loading it into gviz_api.DataTable
  data_table = gviz_api.DataTable(description)
  data_table.LoadData(data)

  # Create a JavaScript code string.
  jscode = data_table.ToJSCode("jscode_data",
                               columns_order=("name", "salary", "full_time"),
                               order_by="salary")
  # Create a JSON string.
  json = data_table.ToJSon(columns_order=("name", "salary", "full_time"),
                           order_by="salary")

  # Put the JS code and JSON string into the template.
  print "Content-type: text/html"
  print
  print page_template % vars()


if __name__ == '__main__':
  main()

Contoh ToJSonResponse

JSonResponse digunakan oleh klien jarak jauh dalam permintaan data.

#!/usr/bin/python

import gviz_api

description = {"name": ("string", "Name"),
               "salary": ("number", "Salary"),
               "full_time": ("boolean", "Full Time Employee")}
data = [{"name": "Mike", "salary": (10000, "$10,000"), "full_time": True},
        {"name": "Jim", "salary": (800, "$800"), "full_time": False},
        {"name": "Alice", "salary": (12500, "$12,500"), "full_time": True},
        {"name": "Bob", "salary": (7000, "$7,000"), "full_time": True}]

data_table = gviz_api.DataTable(description)
data_table.LoadData(data)
print "Content-type: text/plain"
print
print data_table.ToJSonResponse(columns_order=("name", "salary", "full_time"),
                                order_by="salary")