Google, görselleştirmelerle tüketilmek üzere DataTable
nesneleri oluşturan açık kaynaklı bir Python kitaplığına sahiptir. Bu kitaplık, Python'da DataTable
oluşturmak ve oluşturduğunuz dosyayı üç 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 doldurması için bir
DataTable
oluşturucuya iletilecek bir JSON dizesi oluşturabilirsiniz. - JSON yanıtı -- Görselleştirmeyi barındıran sayfayı siz barındırmıyorsanız ve yalnızca harici görselleştirmeler için bir veri kaynağı olarak hareket etmek istiyorsanız, bir veri isteğine yanıt olarak döndürülebilecek eksiksiz bir JSON yanıt dizesi oluşturabilirsiniz.
- JavaScript dizesi: Veri tablosunu, birkaç JavaScript kod satırından oluşan ve bir
google.visualization.DataTable
nesnesini oluşturup Python tablonuzdaki verilerle dolduran bir dize olarak çıkışını alabilirsiniz. Daha sonra,google.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 programlamasını anladığınız ve görselleştirme oluşturma ve görselleştirme kullanma ile ilgili tanıtım görselleştirme belgelerini okuduğunuz varsayılır.
İçindekiler
Kitaplık nasıl kullanılır?
Temel adımlar daha ayrıntılı olarak aşağıda verilmiştir:
1. gviz_api.DataTable
nesnesi oluşturun
Yukarıdaki bağlantıdan gviz_api.py kitaplığını içe aktarın ve gviz_api.DataTable
sınıfını örneklendirin. Sınıf iki parametre alır: tablodaki verilerin biçimini açıklayan tablo şeması ve tablonun doldurulması için isteğe bağlı veriler. İsterseniz daha sonra veri ekleyebilir veya verilerin üzerine tamamen yazabilirsiniz, ancak satırları tek tek kaldıramazsınız veya tablo şemasını temizleyemezsiniz.
2. Tablo şemanızı açıklayın
Tablo şeması, oluşturucuya iletilen table_description
parametresiyle belirtilir. Bunu daha sonra değiştiremezsiniz. Şema, tablodaki tüm sütunları açıklar: her bir sütunun veri türü, kimlik ve isteğe bağlı etiket.
Her sütun bir unsurla açıklanır: (Kimlik [,data_type [,label [,custom_properties]]]).
- 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 bir dize tanımlayıcısı. Desteklenen veri türlerinin listesini SingleValueToJS() yönteminde bulabilirsiniz. Örnek olarak "dize" ve "boole" verilebilir. Belirtilmezse varsayılan değer "dize"dir.
- label: Sütun için görselleştirmenin bir parçası olarak görüntülenebilecek kullanıcı dostu bir ad. Belirtilmezse kimlik değeri kullanılır.
- custom_properties - Özel sütun özelliklerinin bir {String:String} sözlüğü.
Tablo şeması, sütun açıklayıcı defterlerinin bir koleksiyonudur. Her liste üyesi, sözlük anahtarı veya sözlük değeri başka bir koleksiyon veya açıklayıcı delege olmalıdır. Herhangi bir sözlük veya liste kombinasyonunu kullanabilirsiniz ancak her anahtar, değer veya üyenin sonunda bir açıklayıcı demet olarak değerlendirilmesi gerekir. Aşağıda birkaç örnek verilmiştir.
- Sütun listesi: [('a', 'number'), ('b', 'string')]
- Dictionary of lists: {('a', 'number'): [('b', 'number'), ('c', 'string')]}
- Dictionary of dictionaries: {('a', 'number'): {'b': 'number', 'c': 'string'}}
- Aynı şekilde, iç içe yerleştirme herhangi bir düzeyde de işe yarar.
3. Verilerinizi doldurma
Tabloya veri eklemek için tablo şemasıyla tam olarak aynı yapıda bir veri öğesi yapısı oluşturun. Dolayısıyla, örneğin şemanız bir listeyse veriler de liste olmalıdır:
- schema: [("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")] }
- data: {"satır1": ["mavi", "kare"], "satır2": ["kırmızı", "daire"]}
Bir tablo satırı, ilgili verilerin ve şemanın bir bölümüdür. Örneğin, iki sütunlu bir liste şemasının iki veri satırına nasıl uygulandığı burada gösterilmektedir.
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. Daha karmaşık örnekleri koddaki AttachData() yöntemi belgelerinde bulabilirsiniz. Böyle karmaşık bir iç içe yerleştirmenin amacı, ihtiyaçlarınıza uygun bir Python veri yapısı kullanabilmenizi sağlamaktır.
4. Verilerinizin çıktısını alın
En yaygın çıkış biçimi JSON'dir. Bu nedenle, 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ıyorsanız ve farklı çıkış biçimlerini destekliyorsanız virgülle ayrılmış değerler, sekmeyle ayrılmış değerler ve JavaScript dahil olmak üzere 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 almak amacıyla bir isteği nasıl işleyeceğinizi öğrenmek için Veri Kaynağını Uygulama bölümüne bakın.
Örnek Kullanım
Çeşitli çıkış biçimlerinin nasıl kullanılacağını gösteren bazı örnekleri burada bulabilirsiniz.
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, 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")