Python:使用pycha快速绘制办公常用图(饼图、垂直直方图、水平直方图、散点图等七种图形)

本文介绍如何使用Pycha库绘制多种类型的图表,包括饼图、柱状图等,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、代码:

[python]  view plain copy
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3.   
  4. import cairo   
  5. import pycha.pie  
  6. import pycha.bar  
  7. import pycha.scatter  
  8. import pycha.stackedbar  
  9. import pycha.line  
  10.   
  11. #设置画布  
  12. def set_charvalue():  
  13.     width,height=600,600   
  14.     surface=cairo.ImageSurface(cairo.FORMAT_ARGB32,width,height)   
  15.     return surface  
  16.       
  17. #画饼图  
  18. def draw_pie(surface, options, dataSet):  
  19.     chart=pycha.pie.PieChart(surface,options)   
  20.     chart.addDataset(dataSet)   
  21.     chart.render()   
  22.     surface.write_to_png('d:\\Pie.png')   
  23.   
  24. #垂直直方图  
  25. def draw_vertical_bar(surface, options, dataSet):  
  26.     chart=pycha.bar.VerticalBarChart(surface,options)   
  27.     chart.addDataset(dataSet)   
  28.     chart.render()   
  29.     surface.write_to_png('d:\\vertical_bar.png')     
  30.    
  31. #垂直水平直方图      
  32. def draw_horizontal_bar(surface, options, dataSet):  
  33.     chart = pycha.bar.HorizontalBarChart(surface,options)   
  34.     chart.addDataset(dataSet)   
  35.     chart.render()   
  36.     surface.write_to_png('d:\\horizontal_bar.png')     
  37.       
  38. #线图      
  39. def draw_line(surface, options, dataSet):  
  40.     chart = pycha.line.LineChart(surface,options)   
  41.     chart.addDataset(dataSet)   
  42.     chart.render()   
  43.     surface.write_to_png('d:\\line.png')        
  44.   
  45. #点图      
  46. def draw_scatterplot(surface, options, dataSet):  
  47.     chart = pycha.scatter.ScatterplotChart(surface,options)   
  48.     chart.addDataset(dataSet)   
  49.     chart.render()   
  50.     surface.write_to_png('d:\\scatterplotChart.png')           
  51.   
  52. #垂直块图       
  53. def draw_stackedverticalbarChar(surface, options, dataSet):  
  54.     chart = pycha.stackedbar.StackedVerticalBarChart(surface,options)   
  55.     chart.addDataset(dataSet)   
  56.     chart.render()   
  57.     surface.write_to_png('d:\\stackedVerticalBarChart.png')        
  58.   
  59. #水平块图  
  60. def draw_stackedhorizontalbarChart(surface, options, dataSet):  
  61.     chart = pycha.stackedbar.StackedHorizontalBarChart(surface,options)   
  62.     chart.addDataset(dataSet)   
  63.     chart.render()   
  64.     surface.write_to_png('d:\\stackedhorizontalbarChart.png')      
  65.       
  66. if __name__ == '__main__':  
  67.     ''''' 
  68.     Function:使用pycha画各种图表 
  69.     Input:NONE 
  70.     Output: NONE 
  71.     author: socrates 
  72.     blog:http://blog.youkuaiyun.com/dyx1024 
  73.     date:2012-02-28 
  74.     '''  
  75.     #数据来源  
  76.     dataSet=(   
  77.              ('iphone',((0,1),(1,3),(2,2.5))),   
  78.              ('htc',((0,2),(1,4),(2,3))),   
  79.              ('hw',((0,5),(1,1,),(2,0.5))),   
  80.              ('zte',((0,3),(1,2,),(2,1.5))),   
  81.             )   
  82.       
  83.     #图像属性定义  
  84.     options={   
  85.                 'legend':{'hide':False},   
  86.                 'title':'手机销售量分布图(by dyx1024)',  
  87.                 'titleColor':'#0000ff',  
  88.                 'titleFont':'字体',  
  89.                 'background':{'chartColor''#ffffff'},   
  90.                 'axis':{'labelColor':'#ff0000'},  
  91.             }       
  92.       
  93.       
  94.     surface = set_charvalue()  
  95.       
  96.     #根据需要调用不同函数画不同形状的图  
  97.     #draw_pie(surface, options, dataSet)  
  98.     #draw_vertical_bar(surface, options, dataSet)  
  99.     #draw_horizontal_bar(surface, options, dataSet)  
  100.     #draw_scatterplot(surface, options, dataSet)  
  101.     #draw_stackedverticalbarChar(surface, options, dataSet)  
  102.     #draw_stackedhorizontalbarChart(surface, options, dataSet)  
  103.     draw_line(surface, options, dataSet)  
  104.       
  105.           
[python]  view plain copy
  1. #!/usr/bin/env python  
  2. # -*- coding: utf-8 -*-  
  3.   
  4. import cairo   
  5. import pycha.pie  
  6. import pycha.bar  
  7. import pycha.scatter  
  8. import pycha.stackedbar  
  9. import pycha.line  
  10.   
  11. #设置画布  
  12. def set_charvalue():  
  13.     width,height=600,600   
  14.     surface=cairo.ImageSurface(cairo.FORMAT_ARGB32,width,height)   
  15.     return surface  
  16.       
  17. #画饼图  
  18. def draw_pie(surface, options, dataSet):  
  19.     chart=pycha.pie.PieChart(surface,options)   
  20.     chart.addDataset(dataSet)   
  21.     chart.render()   
  22.     surface.write_to_png('d:\\Pie.png')   
  23.   
  24. #垂直直方图  
  25. def draw_vertical_bar(surface, options, dataSet):  
  26.     chart=pycha.bar.VerticalBarChart(surface,options)   
  27.     chart.addDataset(dataSet)   
  28.     chart.render()   
  29.     surface.write_to_png('d:\\vertical_bar.png')     
  30.    
  31. #垂直水平直方图      
  32. def draw_horizontal_bar(surface, options, dataSet):  
  33.     chart = pycha.bar.HorizontalBarChart(surface,options)   
  34.     chart.addDataset(dataSet)   
  35.     chart.render()   
  36.     surface.write_to_png('d:\\horizontal_bar.png')     
  37.       
  38. #线图      
  39. def draw_line(surface, options, dataSet):  
  40.     chart = pycha.line.LineChart(surface,options)   
  41.     chart.addDataset(dataSet)   
  42.     chart.render()   
  43.     surface.write_to_png('d:\\line.png')        
  44.   
  45. #点图      
  46. def draw_scatterplot(surface, options, dataSet):  
  47.     chart = pycha.scatter.ScatterplotChart(surface,options)   
  48.     chart.addDataset(dataSet)   
  49.     chart.render()   
  50.     surface.write_to_png('d:\\scatterplotChart.png')           
  51.   
  52. #垂直块图       
  53. def draw_stackedverticalbarChar(surface, options, dataSet):  
  54.     chart = pycha.stackedbar.StackedVerticalBarChart(surface,options)   
  55.     chart.addDataset(dataSet)   
  56.     chart.render()   
  57.     surface.write_to_png('d:\\stackedVerticalBarChart.png')        
  58.   
  59. #水平块图  
  60. def draw_stackedhorizontalbarChart(surface, options, dataSet):  
  61.     chart = pycha.stackedbar.StackedHorizontalBarChart(surface,options)   
  62.     chart.addDataset(dataSet)   
  63.     chart.render()   
  64.     surface.write_to_png('d:\\stackedhorizontalbarChart.png')      
  65.       
  66. if __name__ == '__main__':  
  67.     ''''' 
  68.     Function:使用pycha画各种图表 
  69.     Input:NONE 
  70.     Output: NONE 
  71.     author: socrates 
  72.     blog:http://blog.youkuaiyun.com/dyx1024 
  73.     date:2012-02-28 
  74.     '''  
  75.     #数据来源  
  76.     dataSet=(   
  77.              ('iphone',((0,1),(1,3),(2,2.5))),   
  78.              ('htc',((0,2),(1,4),(2,3))),   
  79.              ('hw',((0,5),(1,1,),(2,0.5))),   
  80.              ('zte',((0,3),(1,2,),(2,1.5))),   
  81.             )   
  82.       
  83.     #图像属性定义  
  84.     options={   
  85.                 'legend':{'hide':False},   
  86.                 'title':'手机销售量分布图(by dyx1024)',  
  87.                 'titleColor':'#0000ff',  
  88.                 'titleFont':'字体',  
  89.                 'background':{'chartColor''#ffffff'},   
  90.                 'axis':{'labelColor':'#ff0000'},  
  91.             }       
  92.       
  93.       
  94.     surface = set_charvalue()  
  95.       
  96.     #根据需要调用不同函数画不同形状的图  
  97.     #draw_pie(surface, options, dataSet)  
  98.     #draw_vertical_bar(surface, options, dataSet)  
  99.     #draw_horizontal_bar(surface, options, dataSet)  
  100.     #draw_scatterplot(surface, options, dataSet)  
  101.     #draw_stackedverticalbarChar(surface, options, dataSet)  
  102.     #draw_stackedhorizontalbarChart(surface, options, dataSet)  
  103.     draw_line(surface, options, dataSet)  
  104.       
  105.           


二、测试:

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):

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值