python使用reportlab画图示例(含中文汉字)


Posted in Python onDecember 03, 2013

准备工作

开发环境:python2.6,reportlab

准备中文字体文件:simsun.ttc

代码:

#!/usr/bin/env python2.6
#coding:utf-8
import traceback
from reportlab.graphics.shapes import Drawing
from reportlab.graphics.charts.lineplots import LinePlot
from reportlab.graphics.charts.textlabels import Label
from reportlab.graphics import renderPDF
from reportlab.graphics.widgets.markers import makeMarker
from reportlab.pdfbase import pdfmetrics, ttfonts
#注意data的类型,
#每一个数据点是一个元组
#一条曲线对应一个存储数据点元组的元组
#一个图形可以包含多条曲线,用列表存储曲线元组
data=[((1,100),(2,200),(3,300),(4,400),(5,500)),((1,50),(2,80),(3,400),(4,40),(5,70))]
drawing = Drawing(500, 300)
lp = LinePlot()
lp.x = 50 #坐标轴中心坐标
lp.y = 30
lp.height = 250
lp.width = 400
lp.data = data
lp.joinedLines = 1
lp.lines.symbol = makeMarker('FilledCircle')
lp.xValueAxis.valueMin = 1
lp.xValueAxis.valueMax = 5
lp.xValueAxis.valueStep = 1
lp.yValueAxis.valueMin = 0
lp.yValueAxis.valueMax = 500
lp.yValueAxis.valueStep = 100
drawing.add(lp)
title = Label()
#若需要显示中文,需要先注册一个中文字体
pdfmetrics.registerFont(ttfonts.TTFont("haha", "simsun.ttc"))
title.fontName   = "haha"
title.fontSize   = 12
title_text = unicode('你好','gbk')
#title_text = "abc"
title._text = title_text
title.x          = 250
title.y          = 280
title.textAnchor ='middle'
drawing.add(title)
Xlabel = Label()
Xlabel._text = 'x'
Xlabel.fontSize   = 12
Xlabel.x          = 480
Xlabel.y          = 30
Xlabel.textAnchor ='middle'
drawing.add(Xlabel)
Ylabel = Label()
Ylabel._text = "y"
Ylabel.fontSize   = 12
Ylabel.x          = 40
Ylabel.y          = 295
Ylabel.textAnchor ='middle'
drawing.add(Ylabel)
try:
     drawing.save(formats=['gif'],outDir=".",fnRoot="abc")
except:
     traceback.print_exc()
Python 相关文章推荐
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python实现彩票系统
Jun 28 Python
一看就懂得Python的math模块
Oct 21 Python
使用Python检测文章抄袭及去重算法原理解析
Jun 14 Python
详解PyCharm安装MicroPython插件的教程
Jun 24 Python
使用python写的opencv实时监测和解析二维码和条形码
Aug 14 Python
PyCharm刷新项目(文件)目录的实现
Feb 14 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
如何用python插入独创性声明
Mar 31 Python
用Python生成会跳舞的美女
Jan 18 Python
Python内置类型集合set和frozenset的使用详解
Apr 26 Python
python33 urllib2使用方法细节讲解
Dec 03 #Python
python使用mysqldb连接数据库操作方法示例详解
Dec 03 #Python
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
Dec 03 #Python
python paramiko实现ssh远程访问的方法
Dec 03 #Python
Python使用urllib2获取网络资源实例讲解
Dec 02 #Python
python读写文件操作示例程序
Dec 02 #Python
python通过ElementTree操作XML获取结点读取属性美化XML
Dec 02 #Python
You might like
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
解析PHP留言本模块主要功能的函数说明(代码可实现)
2013/06/25 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
thinkphp验证码的实现(form、ajax实现验证)
2016/07/28 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
为jquery.ui.dialog 增加“自动记住关闭时的位置”的功能
2009/11/24 Javascript
JavaScript是否可实现多线程  深入理解JavaScript定时机制
2009/12/22 Javascript
javascript学习笔记(九) js对象 设计模式
2012/06/19 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
javaScript知识点总结(必看篇)
2016/06/10 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
分分钟玩转Vue.js组件
2016/10/25 Javascript
AngularJS中watch监听用法分析
2016/11/04 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
Node.js文件编码格式的转换的方法
2018/04/27 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
基于Cesium绘制抛物弧线
2020/11/18 Javascript
原生js 实现表单验证功能
2021/02/08 Javascript
pycharm 使用心得(三)Hello world!
2014/06/05 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
接口的多继承会带来哪些问题
2015/08/17 面试题
计算机专业个人简短的自我评价
2013/10/23 职场文书
兼职学生的自我评价
2013/11/24 职场文书
文体活动实施方案
2014/03/27 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
还款承诺书范本
2015/01/20 职场文书
个人党性锻炼总结
2015/03/05 职场文书
2015年毕业生自荐信范文
2015/03/24 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL