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中threading模块join函数用法实例分析
Jun 04 Python
从局部变量和全局变量开始全面解析Python中变量的作用域
Jun 16 Python
python使用turtle库绘制树
Jun 25 Python
Python机器学习k-近邻算法(K Nearest Neighbor)实例详解
Jun 25 Python
Python中Numpy包的安装与使用方法简明教程
Jul 03 Python
老生常谈python中的重载
Nov 11 Python
python二维码操作:对QRCode和MyQR入门详解
Jun 24 Python
python绘制已知点的坐标的直线实例
Jul 04 Python
Python一键安装全部依赖包的方法
Aug 12 Python
Python使用pickle进行序列化和反序列化的示例代码
Sep 22 Python
pycharm + django跨域无提示的解决方法
Dec 06 Python
python周期任务调度工具Schedule使用详解
Nov 23 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连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
php动态函数调用方法
2015/05/21 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
Thinkphp 框架扩展之Widget扩展实现方法分析
2020/04/23 PHP
点击button获取text内容并改变样式的js实现
2014/09/09 Javascript
JSON相关知识汇总
2015/07/03 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
Python使用函数默认值实现函数静态变量的方法
2014/08/18 Python
python基础教程之面向对象的一些概念
2014/08/29 Python
浅析Python多线程下的变量问题
2015/04/28 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python实现删除文件中含“指定内容”的行示例
2017/06/09 Python
学习Python3 Dlib19.7进行人脸面部识别
2018/01/24 Python
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
Python使用分布式锁的代码演示示例
2018/07/30 Python
python flask框架实现传数据到js的方法分析
2019/06/11 Python
python中for循环把字符串或者字典添加到列表的方法
2019/07/20 Python
python3 xpath和requests应用详解
2020/03/06 Python
python的pip有什么用
2020/06/17 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
俄罗斯购买自行车网站:Vamvelosiped
2021/01/29 全球购物
合同专员岗位职责
2013/12/18 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫