Python中的一個繪制圖表的模塊:pycha
來自: 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。
安裝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\ScriptsInstalled 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>