C語言中文網 目錄

Python Pygal模塊安裝和使用

Pygal 是另一個簡單易用的數據圖庫,它以面向對象的方式來創建各種數據圖,而且使用 Pygal 可以非常方便地生成各種格式的數據圖,包括 PNG、SVG 等。使用 Pygal 也可以生成 XML etree、HTML 表格(這些都需要安裝其他包)。

Pygal模塊安裝

安裝 Pygal 包與安裝其他 Python 包基本相同,同樣可以使用 pip 來安裝。

啟動命令行窗口,在命令行窗口中輸入如下命令:

pip install pygal

上面命令將會自動安裝 Pygal 包的最新版本。運行上面命令,可以看到程序先下載 Pygal 包,然后提示 Pygal 包安裝成功:

Installing collected packages:pygal
Successfully installed pygal-2.4.0

如果在命令行窗口中提示找不到 pip 命令,則也可以通過 python 命令運行 pip 模塊來安裝 Pygal。例如,通過如下命令來安裝 Pygal 包:

python -m pip install pygal

在成功安裝 Pygal 包之后,可以通過 pydoc 來查看 Pygal 包的文檔。在命令行窗口中輸入如下命令:

python -m pydoc -p 8899

運行上面命令之后,打開瀏覽器查看 http://localhost:8899/ 頁面,可以在 Python 安裝目錄的 lib\site-packages 下看到 Pygal 包的文檔,如圖 1 所示。

Pygal 包的文檔
圖 1 Pygal 包的文檔

單擊圖 1 所示頁面上的“pygal(package)”鏈接,將可以看到如圖 2 所示的 API 頁面。

Pygal 包的 API 頁面
圖 2 Pygal 包的 API 頁面

通過圖 2 所示的頁面,即可查看 Pygal 包下的子模塊和類。

Pygal 數據圖入門

Pygal 使用面向對象的方式來生成數據圖。使用 Pygal 生成數據圖的步驟大致如下:

1、創建 Pygal 數據圖對象。Pygal 為不同的數據圖提供了不同的類,比如柱狀圖使用 pygal.Bar 類,餅圖使用 pygal.Pie 類,折線圖使用 pygal.Line 類,等等。
2、調用數據圖對象的 add() 方法添加數據。
3、調用 Config 對象的屬性配置數據圖。
4、調用數據圖對象的 render_to_xxx() 方法將數據圖渲染到指定的輸出節點(此處的輸出節點可以是 PNG 圖片、SVG 文件,也可以是其他節點)。

下面通過生成簡單的柱狀圖來演示如何使用 Pygal 生成數據圖,該柱狀圖展示了兩種教程從 2011 年到 2017 年的銷量統計數據:
import pygal

x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
# 定義2個列表分別作為兩組柱狀圖的Y軸數據
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]
# 創建pygal.Bar對象(柱狀圖)
bar = pygal.Bar()
# 添加兩組代表條柱的數據
bar.add('C語言基礎', y_data)
bar.add('Python語言基礎', y_data2)
# 設置X軸的刻度值
bar.x_labels = x_data
bar.title = '編程教程的歷年銷量'
# 設置X、Y軸的標題
bar.x_title = '年份'
bar.y_title = '銷量'
# 指定將數據圖輸出到SVG文件中
bar.render_to_file('fk_books.svg')
上面程序中第 8 行代碼創建了 pygal.Bar 對象,該對象就代表一個柱狀圖。接下來的兩行代碼為 pygal.Bar 對象添加了兩組柱狀圖數據。

通過上面程序,實際上已經可以生成簡單的柱狀圖了。如果注釋掉后面對 pygal.Bar 對象的屬性賦值的代碼,運行該程序,將可以看到在程序當前目錄下生成了一個 fk_books.svg 文件,使用瀏覽器查看該文件,可以看到如圖 3 所示的柱狀圖。

簡單的柱狀圖
圖 3 簡單的柱狀圖

從圖 3 所示的柱狀圖可以看到,這個數據圖的 X 軸沒有刻度值,X 軸、Y 軸沒有名稱,它們都可以通過 pygal.Bar 對象來配置。接下來程序為 pygal.Bar 對象的 title、x_labels、x_title、y_title 屬性賦值,已經屬于配置數據圖的部分了,其分別配置了數據圖的標題、X 軸的刻度值、X 軸的名稱、Y 軸的名稱。

在增加上面的配置代碼之后,再次運行該程序,程序會再次生成一個 SVG 文件。由于 SVG 文件支持交互,因此,當用戶把鼠標指針移到某個條柱上時,將可以看到關于該條柱的信息,如圖 4 所示。

支持交互的SVG 數據圖
圖 4 支持交互的 SVG 數據圖

配置 Pygal 數據圖

正如從前面程序所看到的,使用 pygal.Bar 生成數據圖之后,程序可以通過對該對象的屬性賦值來配置數據圖。那么,除設置上面這些簡單的屬性之外,是否還可以設置其他屬性呢?

答案是肯定的,查閱 http://localhost:8899/pygal.config.html 頁面(其中 8899 是運行 pydoc 的端口),可以看到 config 模塊的相關說明,該模塊包含了 BaseConfig、CommonConfig、Config、SerieConfig 等配置類,這些類所包含的屬性正是用于配置 Pygal 數據圖的。

下面程序示范了該頁面中部分配置屬性的作用:
import pygal

x_data = ['2011', '2012', '2013', '2014', '2015', '2016', '2017']
# 定義2個列表分別作為兩組柱狀圖的Y軸數據
y_data = [58000, 60200, 63000, 71000, 84000, 90500, 107000]
y_data2 = [52000, 54200, 51500,58300, 56800, 59500, 62700]
# 創建pygal.Bar對象(柱狀圖)
bar = pygal.Bar()
# 添加兩組代表條柱的數據
bar.add('C語言基礎', y_data)
bar.add('Python基礎', y_data2)
# 設置X軸的刻度值
bar.x_labels = x_data
bar.title = '編程教程的歷年銷量'
# 設置X、Y軸的標題
bar.x_title = '年份'
bar.y_title = '銷量'
# 設置X軸的刻度值旋轉45度
bar.x_label_rotation = 45
# 設置將圖例放在底部
bar.legend_at_bottom = True
# 設置數據圖四周的頁邊距
# 也可通過margin_bottom、margin_left、margin_right、margin_top只設置單獨一邊的頁邊距
bar.margin = 35
# 隱藏X軸上的網格線
bar.show_y_guides=False
# 顯示X軸上的網格線
bar.show_x_guides=True
# 指定將數據圖輸出到SVG文件中
bar.render_to_file('fk_books.svg')
運行上面程序,將會生成如圖 5 所示的數據圖。

配置Pygal數據圖
圖 5 配置數據圖

對比圖 4 和圖 5 所示的數據圖,可以發現圖 5 所示的數據圖的 X 軸刻度值旋轉了45°,這是 x_label_rotation 屬性的作用;數據圖的圖例被顯示在底部,這是 legend_at_bottom 屬性的作用;數據圖不再顯示水平方向的網格錢,這是 show_y_guides 屬性的作用;數據圖顯示垂直方向的網格線,這是 show_x_guides 屬性的作用。

對于不同的數據圖,Pygal 支持大量對應的配置,具體可結合 http://localhost:8899/pygal.config.html 頁面給出的屬性進行設置、測試,此處不再一一講解。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo