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中反射用法实例
Mar 27 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
python常见的格式化输出小结
Dec 15 Python
Python3中的列表生成式、生成器与迭代器实例详解
Jun 11 Python
Python中的取模运算方法
Nov 10 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
pandas 如何分割字符的实现方法
Jul 29 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
Python中文分词库jieba,pkusegwg性能准确度比较
Feb 11 Python
Django自定义全局403、404、500错误页面的示例代码
Mar 08 Python
python实现从ftp上下载文件的实例方法
Jul 19 Python
python操作链表的示例代码
Sep 27 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随机生成福彩双色球号码的2种方法
2013/02/04 PHP
Laravle eloquent 多对多模型关联实例详解
2017/11/22 PHP
javascript 的Document属性和方法集合
2010/01/25 Javascript
jQuery1.3.2 升级到jQuery1.4.4需要修改的地方
2011/01/06 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
jquery实现带单选按钮的表格行选中时高亮显示
2013/08/01 Javascript
javascript得到当前页的来路即前一页地址的方法
2014/02/18 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
js计算德州扑克牌面值的方法
2015/03/04 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
JS中常用的正则表达式
2016/09/29 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
vue组件jsx语法的具体使用
2018/05/21 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
vue+mock.js实现前后端分离
2019/07/24 Javascript
vue中实现高德定位功能
2019/12/03 Javascript
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python之eval()函数危险性浅析
2014/07/03 Python
让Python代码更快运行的5种方法
2015/06/21 Python
python实现简单遗传算法
2018/03/19 Python
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
入党自我鉴定范文
2013/10/04 职场文书
中学生团员自我评价分享
2013/12/07 职场文书
称象教学反思
2014/02/03 职场文书
法制宣传日活动总结
2014/04/29 职场文书
自主招生推荐信范文
2014/05/10 职场文书
病媒生物防治方案
2014/05/13 职场文书
外贸会计专业自荐信
2014/06/22 职场文书
党员干部公开承诺书范文
2015/04/27 职场文书
合同审查法律意见书
2015/06/04 职场文书
孔繁森观后感
2015/06/10 职场文书
防震减灾主题班会
2015/08/14 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL