今天晚上學習了下使用pycha模組來製作各種辦公用圖的方法,非常簡單,本文使用其繪製了7種圖表。
此模組和API地址為:http://www.lorenzogil.com/projects/pycha/,需要的朋友可以下載下來玩一下,下面是我晚上學習時寫的一點東東,分享之。
一、代碼:
#!/usr/bin/env python# -*- coding: utf-8 -*-import cairo import pycha.pieimport pycha.barimport pycha.scatterimport pycha.stackedbarimport pycha.line#設定畫布def set_charvalue(): width,height=600,600 surface=cairo.ImageSurface(cairo.FORMAT_ARGB32,width,height) return surface #畫餅圖def draw_pie(surface, options, dataSet): chart=pycha.pie.PieChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\Pie.png') #垂直長條圖def draw_vertical_bar(surface, options, dataSet): chart=pycha.bar.VerticalBarChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\vertical_bar.png') #垂直水平長條圖 def draw_horizontal_bar(surface, options, dataSet): chart = pycha.bar.HorizontalBarChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\horizontal_bar.png') #線圖 def draw_line(surface, options, dataSet): chart = pycha.line.LineChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\line.png') #點圖 def draw_scatterplot(surface, options, dataSet): chart = pycha.scatter.ScatterplotChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\scatterplotChart.png') #垂直塊圖 def draw_stackedverticalbarChar(surface, options, dataSet): chart = pycha.stackedbar.StackedVerticalBarChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\stackedVerticalBarChart.png') #水平塊圖def draw_stackedhorizontalbarChart(surface, options, dataSet): chart = pycha.stackedbar.StackedHorizontalBarChart(surface,options) chart.addDataset(dataSet) chart.render() surface.write_to_png('d:\\stackedhorizontalbarChart.png') if __name__ == '__main__': ''' Function:使用pycha畫各種圖表 Input:NONE Output: NONE author: socrates blog:http://blog.csdn.net/dyx1024 date:2012-02-28 ''' #資料來源 dataSet=( ('iphone',((0,1),(1,3),(2,2.5))), ('htc',((0,2),(1,4),(2,3))), ('hw',((0,5),(1,1,),(2,0.5))), ('zte',((0,3),(1,2,),(2,1.5))), ) #映像屬性定義 options={ 'legend':{'hide':False}, 'title':'手機銷售量分布圖(by dyx1024)', 'titleColor':'#0000ff', 'titleFont':'字型', 'background':{'chartColor': '#ffffff'}, 'axis':{'labelColor':'#ff0000'}, } surface = set_charvalue() #根據需要調用不同函數畫不同形狀的圖 #draw_pie(surface, options, dataSet) #draw_vertical_bar(surface, options, dataSet) #draw_horizontal_bar(surface, options, dataSet) #draw_scatterplot(surface, options, dataSet) #draw_stackedverticalbarChar(surface, options, dataSet) #draw_stackedhorizontalbarChart(surface, options, dataSet) draw_line(surface, options, dataSet)
二、測試:
1、函數draw_pie(surface, options, dataSet):
2、函數draw_vertical_bar(surface, options, dataSet):
3、函數draw_horizontal_bar(surface, options, dataSet):
4、函數draw_line(surface, options, dataSet):
5、函數draw_scatterplot(surface, options, dataSet):
6、函數draw_stackedverticalbarChar(surface, options, dataSet):
7、函數draw_stackedhorizontalbarChart(surface, options, dataSet):