1. 程式人生 > >Python互動式繪圖——Pygal繪圖包(一、入門)

Python互動式繪圖——Pygal繪圖包(一、入門)

python互動式繪圖–Pygal(一)

在利用python處理資料時,一份動態的可互動的圖示常常能讓我們更加自由的探索資料。Pygal工具包就為我們提供了這樣的工具,可以在繪圖後互動地觀察資料,更加直觀生動的感受一圖勝千言的美妙。

安裝PygalDemo如何在jupyter中使用Pygal

1.安裝

對於Pygal可以使用pip進行安裝: pip install pygal

2.初體驗

安裝好了就可以開始畫圖了,首先我們畫一柱狀圖來作為演示:

import pygal                                                       # 匯入 pygal
bar_chart = pygal.Bar() # 建立一個換圖物件 bar_chart.add('FirsrtTry', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]) # 新增一些值和對應的序列 bar_chart.add('SecondTry', [55, 34, 21, 13, 8, 5, 3, 2, 1, 1, 0]) # 再新增另一個序列 bar_chart.render_to_file('bar_chart.svg') # Save the svg to a file`

隨後在執行目錄下就可以看到bar_char.svg的影象檔案了。 在這裡插入圖片描述

3.Jupyter中使用

很多情況下我們需要在jupyter中使用圖表功能,那麼就需要自己設定一個渲染選項,將生成的互動svg圖載入到jupyter中:

#首先需要定義一個html渲染物件
html_pygal = '<!DOCTYPE html><html><head><script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/svg.jquery.js"></script><script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/pygal-tooltips.js"></script></head><body><figure>{pygal_render}</figure></body></html>'
#或者寫成這樣的格式 html_pygal = """ <!DOCTYPE html> <html> <head> <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/svg.jquery.js"></script> <script type="text/javascript" src="http://kozea.github.com/pygal.js/javascripts/pygal-tooltips.js"></script> <!-- 載入對應的js工具 --> <!-- from http://ino.pm/blog/ipython-pygal/#.W6XBCkxuJPZ --> </head> <body> <figure> {pygal_render} <!-- 這裡定義的渲染物件的輸入 --> </figure> </body> </html> """

然後需要匯入互動式繪圖包:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')    #這裡是為了防止windows下編碼錯誤

import pygal
from IPython.display import SVG, display,HTML    #匯入互動式繪圖包
%matplotlib inline

我們再重複一下剛剛的作圖步驟,稍微修程式碼:

bar_chart = pygal.Bar()                                            # 建立一個換圖物件
bar_chart.add('FirsrtTry', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])  # 新增一些值和對應的序列
bar_chart.add('SecondTry', [55, 34, 21, 13, 8, 5, 3, 2, 1, 1, 0])  # 再新增另一個序列
HTML(html_pygal.format(pygal_render=bar_chart.render()))    
#這裡直接用render(),而無需render_to_file()
#此時,HTML工具利用剛剛定義的html_pygal 就可以載入對應的js來處理,在jupyter中實現interaction了
  • 還有一種更簡便的方法
from IPython.display import SVG, display   #利用display模組來現實
display({'image/svg+xml': bar_chart.render()}, raw=True)

在這裡插入圖片描述