Python中的一個繪制圖表的模塊:pycha

hand.com 8年前發布 | 24K 次閱讀 Python Python開發

來自: http://www.crifan.com/python_making_charts_module_pycha/

背景

看到 有人 提到pycha,說是關于用python畫圖表的。

之前也已經折騰過一個類似的,操作Excel中去畫圖表的:

【已解決】Python中處理操作Excel中的圖表(Chart,Graph)

現在這個,貌似是獨立的,畫圖表的。

pycha簡介

根據Python官網

http://pypi.python.org/pypi/pycha/

和其主頁

https://bitbucket.org/lgs/pycha/wiki/Home

的介紹:

pycha是啥

pycha是個Python模塊,用來畫圖表的的模塊。

pycha是PYthon CHArts的縮寫;

一些例子:

pycha的優點/特點

  • 輕量級
  • 用起來簡單
  • 使用默認值,畫出來的效果就已經很好看了
  • 可以自定義,定制化
  • 沒打算支持所有類型的圖表,但是盡量支持最常見的,最通用的圖表

pycha的相關介紹

1.其用到了 Cairo 庫。

2. 與此類似的模塊,還有: pyCairoChart

3. Pycha基于 Plotr ,而 Plotr 又基于 PlotKit

之前其是用javascript實現的(運行在客戶端),作者希望其可以在服務端運行,所以將 Plotr 移植成用Python實現。

4. 官網文檔: http://packages.python.org/pycha

下載pycha

http://pypi.python.org/pypi/pycha/

中就可以找到下載地址:

pycha-0.6.0.tar.gz

下載得到pycha-0.6.0.tar.gz,解壓,得到文件夾pycha-0.6.0。

安裝pycha

安裝之前,發現此處依賴的cairo,還沒安裝,肯定待會使用也是不行的。

所以先去折騰安裝cairo,詳見:

【記錄】安裝Python版本的cairo模塊:Pycairo

安裝完畢了python版本的cairo,Pycairo后,再去繼續安裝pycha。

打開cmd,切換到對應目錄pycha-0.6.0,去執行setup.py install,此處竟然出現沒有setuptools的錯誤。

詳細折騰過程參見:

【已解決】Python中使用setup.py install去安裝別的模塊結果出錯:ImportError: No module named setuptools

然后再去安裝,就正常了:

D:\tmp\dev_tools\python\pycha\dist\pycha-0.6.0>setup.py install
running install
running bdist_egg
running egg_info
writing pycha.egg-info\PKG-INFO
writing top-level names to pycha.egg-info\top_level.txt
writing dependency_links to pycha.egg-info\dependency_links.txt
writing entry points to pycha.egg-info\entry_points.txt
reading manifest file 'pycha.egg-info\SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'pycha.egg-info\SOURCES.txt'
installing library code to build\bdist.win-amd64\egg
running install_lib
running build_py
creating build
creating build\lib
creating build\lib\pycha
copying pycha\bar.py -> build\lib\pycha
copying pycha\chart.py -> build\lib\pycha
copying pycha\color.py -> build\lib\pycha
copying pycha\line.py -> build\lib\pycha
copying pycha\pie.py -> build\lib\pycha
copying pycha\scatter.py -> build\lib\pycha
copying pycha\stackedbar.py -> build\lib\pycha
copying pycha\utils.py -> build\lib\pycha
copying pycha__init.py -> build\lib\pycha
creating build\lib\chavier
copying chavier\app.py -> build\lib\chavier
copying chavier\dialogs.py -> build\lib\chavier
copying chavier\gui.py -> build\lib\chavier
copying chavier\init.py -> build\lib\chavier
creating build\bdist.win-amd64
creating build\bdist.win-amd64\egg
creating build\bdist.win-amd64\egg\chavier
copying build\lib\chavier\app.py -> build\bdist.win-amd64\egg\chavier
copying build\lib\chavier\dialogs.py -> build\bdist.win-amd64\egg\chavier
copying build\lib\chavier\gui.py -> build\bdist.win-amd64\egg\chavier
copying build\lib\chavier\init.py -> build\bdist.win-amd64\egg\chavier
creating build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\bar.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\chart.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\color.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\line.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\pie.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\scatter.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\stackedbar.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\utils.py -> build\bdist.win-amd64\egg\pycha
copying build\lib\pycha\init.py -> build\bdist.win-amd64\egg\pycha
byte-compiling build\bdist.win-amd64\egg\chavier\app.py to app.pyc
byte-compiling build\bdist.win-amd64\egg\chavier\dialogs.py to dialogs.pyc
byte-compiling build\bdist.win-amd64\egg\chavier\gui.py to gui.pyc
byte-compiling build\bdist.win-amd64\egg\chavier\init.py to init.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\bar.py to bar.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\chart.py to chart.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\color.py to color.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\line.py to line.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\pie.py to pie.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\scatter.py to scatter.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\stackedbar.py to stackedbar.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\utils.py to utils.pyc
byte-compiling build\bdist.win-amd64\egg\pycha\init.py to init__.pyc
creating build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\entry_points.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO
copying pycha.egg-info\zip-safe -> build\bdist.win-amd64\egg\EGG-INFO
creating dist
creating 'dist\pycha-0.6.0-py2.7.egg' and adding 'build\bdist.win-amd64\egg' to it
removing 'build\bdist.win-amd64\egg' (and everything under it)
Processing pycha-0.6.0-py2.7.egg
Copying pycha-0.6.0-py2.7.egg to d:\tmp\dev_install_root\python27_x64\lib\site-packages
Adding pycha 0.6.0 to easy-install.pth file
Installing chavier-script.pyw script to D:\tmp\dev_install_root\Python27_x64\Scripts
Installing chavier.exe script to D:\tmp\dev_install_root\Python27_x64\Scripts
Installing chavier.exe.manifest script to D:\tmp\dev_install_root\Python27_x64\Scripts

Installed d:\tmp\dev_install_root\python27_x64\lib\site-packages\pycha-0.6.0-py2.7.egg Processing dependencies for pycha==0.6.0 Finished processing dependencies for pycha==0.6.0</pre>

使用pycha

都安裝好了,就可以去試試效果了。

參考:

http://packages.python.org/pycha/tutorial.html

去寫代碼。

后來還是從:

https://bitbucket.org/lgs/pycha/src/fa89153081d0/examples?at=default

找到:

https://bitbucket.org/lgs/pycha/src/fa89153081d0/examples/piechart.py?at=default

試了試代碼:

#!/usr/bin/python

-- coding: utf-8 --

""" Function: 【記錄】折騰Python中的一個繪制圖表的模塊:pycha http://www.crifan.com/python_making_charts_module_pycha

Author: Crifan Li Version: 2013-01-04 Contact: admin at crifan dot com """

import cairo; import sys; import cairo; import pycha.pie; from lines import lines;

def pycharDemo(output): surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 800, 800)

dataSet = [(line[0], [[0, line[1]]]) for line in lines]

options = {
    'axis': {
        'x': {
            'ticks': [dict(v=i, label=d[0]) for i, d in enumerate(lines)],
        }
    },
    'legend': {
        'hide': True,
    },
    'title': 'Pie Chart',
}
chart = pycha.pie.PieChart(surface, options)

chart.addDataset(dataSet)
chart.render()

surface.write_to_png(output)

if name == 'main': if len(sys.argv) > 1: output = sys.argv[1] else: output = 'piechart.png' pycharDemo(output);</pre>

運行結果竟然又是缺少一個lines:

D:\tmp\tmp_dev_root\python\tutorial_summary\pycha_demo>pycha_demo.py
Traceback (most recent call last):
  File "D:\tmp\tmp_dev_root\python\tutorial_summary\pycha_demo\pycha_demo.py", line 17, in <module>
    from lines import lines;
ImportError: No module named lines

所以,還得再去安裝lines:

【已解決】Python代碼運行出錯:ImportError: No module named lines

然后后來就是去把相關示例代碼都下載下來了:

此處,運行對應代碼,會生成對應的piechart.png,效果和開始官網的例子,一模一樣:

再去試試其他的:

barchart.py會生成兩個:

errorbarchart.py也是生成兩個:

interval.py的效果:

linechart.py的效果:

pychadownloads.py的效果:

scatterchart.py的效果:

stackedbarchart.py效果:

svg.py會生成對應的testsvg.svg,效果是:

test.py的效果,三個:

總之,效果相當的不錯。

總結

pycha,安裝起來,稍微有點麻煩,但是效果那是相當地不錯哇。

</div>

 本文由用戶 hand.com 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!