Google, görselleştirmelerle tüketilmek üzere DataTable
nesneleri oluşturan bir Python kitaplığını açık kaynaklı hale getirmiştir. Bu kitaplık, Python'da DataTable
oluşturup üç biçimden birinde oluşturmak için kullanılabilir:
- JSON dizesi -- Verilerinizi kullanan görselleştirmeyi barındıran sayfayı barındırıyorsanız doldurmak için bir
DataTable
oluşturucuya iletecek bir JSON dizesi oluşturabilirsiniz. - JSON yanıtı -- Görselleştirmeyi barındıran sayfayı barındırmıyorsanız ve yalnızca harici görselleştirmeler için veri kaynağı olarak çalışmak istiyorsanız bir veri isteğine yanıt olarak döndürülebilecek tam bir JSON yanıt dizesi oluşturabilirsiniz.
- JavaScript dizesi -- Veri tablosunu,
google.visualization.DataTable
nesnesini Python tablonuzdaki verilerle oluşturacak şekilde, birkaç JavaScript kodu satırından oluşan bir dize olarak üretebilirsiniz. Daha sonragoogle.visualization.DataTable
nesnesini oluşturmak ve doldurmak için bu JavaScript'i bir motorda çalıştırabilirsiniz. Bu genellikle yalnızca hata ayıklama için kullanılır.
Bu belgede, temel Python programlamayı anladığınız ve görselleştirme ve görselleştirme için tanıtım görselleştirmesi belgelerini okuduğunuz varsayılmaktadır.
İçindekiler
Kitaplık'ı kullanma
Temel adımlar daha ayrıntılı olarak aşağıda verilmiştir:
1. gviz_api.DataTable
nesnesi oluşturma
Yukarıdaki bağlantıdan gviz_api.py kitaplığını içe aktarın ve gviz_api.DataTable
sınıfını oluşturun. Sınıf iki parametre alır: Tablodaki verilerin biçimini açıklayan tablo şeması ve tablonun doldurulacağı isteğe bağlı veriler. İsterseniz daha sonra veri ekleyebilir veya verilerin tamamen üzerine yazar, ancak tek tek satırları kaldırmaz veya tablo şemasını temizlemez.
2. Tablo şemanızı açıklayın
Tablo şeması, oluşturucuya iletilen table_description
parametresiyle belirtilir. Bunu daha sonra değiştiremezsiniz. Tablo, tablodaki tüm sütunları açıklar: Her bir sütunun veri türü, kimlik ve isteğe bağlı bir etiket.
Her sütun bir tül ile tanımlanır: (No [,data_type [,etiket [,custom_property]]]).
- Kimlik: Sütunu tanımlamak için kullanılan dize kimliği. Boşluk içerebilir. Her sütunun kimliği benzersiz olmalıdır.
- data_type - [isteğe bağlı] Bu sütundaki verilerin Python veri türünün dize tanımlayıcısı. Desteklenen veri türlerinin listesini SingleValueToJS() yönteminde bulabilirsiniz. Buna örnek olarak "string" ve "boole" verilebilir. Belirtilmezse varsayılan olarak "dize" değeri kullanılır.
- label - Sütunun, görselleştirmenin bir parçası olarak görüntülenebilecek, kullanıcı dostu bir adı. Belirtilmemesi durumunda kimlik değeri kullanılır.
- custom_propertys: Özel sütun özelliklerinin bir {String:String} sözlüğü.
Tablo şeması, sütun açıklayıcı üçlülerinin bir koleksiyonudur. Her liste üyesi, sözlük anahtarı veya sözlük değeri başka bir koleksiyon ya da açıklayıcı bir unsur olabilir. Herhangi bir sözlük veya liste kombinasyonunu kullanabilirsiniz. Ancak her anahtar, değer veya üyenin sonuçta açıklayıcı bir unsur olduğunu değerlendirmesi gerekir. Aşağıda birkaç örnek verilmiştir.
- Sütun listesi: [('a', 'number'), ('b', 'string')]
- Sözlük listesi: {('a', 'number'): [('b', 'number'), ('c', 'string')]}
- Sözlük sözlükleri: {('a', 'number'): {'b': 'number', 'c': 'string'}}
- Bu, bu şekilde devam ediyor.
3. Verilerinizi doldurma
Tabloya veri eklemek için tablo şemasıyla aynı yapıda bir veri öğeleri yapısı oluşturun. Örneğin, şemanız liste ise veriler liste olmalıdır:
- şema: [("renk", "dize") ("şekil", "dize")]
- veri: [["mavi", "kare"], ["kırmızı", "daire"]]
Şema bir sözlükse veriler bir sözlük olmalıdır:
- schema: {("satıradı", "dize"): [("renk", "dize") ("şekil", "dize")] }
- veri: {"row1": ["mavi", "kare"], "satır2": ["kırmızı", "daire"]}
Bir tablo satırı, karşılık gelen verilerin ve şemanın bir bölümüdür. Örneğin, iki sütunlu bir listenin şemasının iki veri satırına nasıl uygulandığını burada görebilirsiniz.
Schema:[(color),(shape)] / \ Data: [["blue", "square"], ["red", "circle"]] Table: Color Shape blue square red circle
Buradaki sözlük anahtarlarının sütun verilerini değerlendirdiğini unutmayın. Koddaki RestrictData() yöntemi dokümanlarında daha karmaşık örnekler bulabilirsiniz. Bu tür karmaşık iç içe yerleştirmenin amacı, ihtiyaçlarınıza uygun bir Python veri yapısı kullanmanıza olanak tanımaktır.
4. Verilerinizi çıkarın
En yaygın çıkış biçimi JSON'dir. Döndürülecek verileri oluşturmak için muhtemelen ToJsonResponse()
işlevini kullanırsınız. Bununla birlikte, giriş isteğini ayrıştırıyor ve farklı çıkış biçimlerini destekliyorsanız virgülle ayrılmış değerler, sekmeyle ayrılmış değerler ve JavaScript gibi diğer biçimleri döndürmek için diğer çıkış yöntemlerinden herhangi birini çağırabilirsiniz. JavaScript genellikle yalnızca hata ayıklama için kullanılır. Tercih edilen yanıt biçimini almaya yönelik bir isteği nasıl işleyeceğinizi öğrenmek için Veri Kaynağı Uygulama konusuna bakın.
Örnek Kullanım
Çeşitli çıkış biçimlerinin nasıl kullanılacağını gösteren bazı örnekler aşağıda verilmiştir.
ToJSon ve ToJS Örneği
#!/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()
ToJSonResponse Örneği
JSonResponse, bir veri isteğinde uzak istemci tarafından kullanılır.
#!/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")