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 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
Django1.3添加app提示模块不存在的解决方法
Aug 26 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
python使用PIL给图片添加文字生成海报示例
Aug 17 Python
Python爬虫文件下载图文教程
Dec 23 Python
python 提取key 为中文的json 串方法
Dec 31 Python
在OpenCV里使用特征匹配和单映射变换的代码详解
Oct 23 Python
python框架flask入门之环境搭建及开启调试
Jun 07 Python
python基于exchange函数发送邮件过程详解
Nov 06 Python
python音频处理的示例详解
Dec 23 Python
python数字图像处理之图像自动阈值分割示例
Jun 28 Python
基于Python实现nc批量转tif格式
Aug 14 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(四)
2006/10/09 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
php中实现用数组妩媚地生成要执行的sql语句
2015/07/10 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
在Laravel的Model层做数据缓存的实现
2019/09/26 PHP
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
Jquery工作常用实例 使用AJAX使网页进行异步更新
2011/07/26 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
2013/06/18 Javascript
JAVA Web实时消息后台服务器推送技术---GoEasy
2016/11/04 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
layui 上传插件 带预览 非自动上传功能的实例(非常实用)
2019/09/23 Javascript
Vue+axios封装请求实现前后端分离
2020/10/23 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
pandas系列之DataFrame 行列数据筛选实例
2018/04/12 Python
浅谈Python 列表字典赋值的陷阱
2019/01/20 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
LINUX下线程,GDI类的解释
2012/04/17 面试题
Linux不知道文件后缀名怎么判断文件类型
2014/08/21 面试题
大学生新闻专业个人自我评价
2013/11/12 职场文书
项目总经理岗位职责
2014/02/14 职场文书
库房管理员岗位职责
2014/03/09 职场文书
行政专员的岗位职责
2014/03/10 职场文书
初中班级口号
2014/06/09 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
财务会计个人原因辞职信
2019/06/21 职场文书
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android