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设置windows桌面壁纸的实现代码
Jan 28 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
Django中的CBV和FBV示例介绍
Feb 25 Python
Python自定义线程类简单示例
Mar 23 Python
python 列表转为字典的两个小方法(小结)
Jun 28 Python
Django Rest framework权限的详细用法
Jul 25 Python
python爬虫 正则表达式解析
Sep 28 Python
Python解析多帧dicom数据详解
Jan 13 Python
pytorch实现MNIST手写体识别
Feb 14 Python
Python应用实现双指数函数及拟合代码实例
Jun 19 Python
Python selenium模块实现定位过程解析
Jul 09 Python
使用Python Tkinter实现剪刀石头布小游戏功能
Oct 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分页集合包括使用方法
2013/10/21 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php实现登录tplink WR882N获取IP和重启的方法
2016/07/20 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
php把字符串指定字符分割成数组的方法
2018/03/12 PHP
PHP常见加密函数用法示例【crypt与md5】
2019/01/27 PHP
PHP正则表达式函数preg_replace用法实例分析
2020/06/04 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
为javascript添加String.Format方法
2020/08/11 Javascript
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
Vue中Quill富文本编辑器的使用教程
2018/09/21 Javascript
详解React项目如何修改打包地址(编译输出文件地址)
2019/03/21 Javascript
js校验开始时间和结束时间
2020/05/26 Javascript
js实现简单的点名器随机色实例代码
2020/09/20 Javascript
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Pyqt清空某一个QTreeewidgetItem下的所有分支方法
2019/06/17 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
英国奢侈品网站:MatchesFashion
2016/12/16 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
西班牙家用电器和电子产品购物网站:Mi Electro
2019/02/25 全球购物
设计师大码女装:11 Honoré
2020/05/03 全球购物
计算机应用专业毕业生求职信
2013/10/24 职场文书
建筑装饰学院室内设计专业个人自我评价
2013/12/07 职场文书
中层干部培训方案
2014/06/16 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
叶问观后感
2015/06/15 职场文书
傅雷家书读书笔记
2015/06/29 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
golang 语言中错误处理机制
2021/08/30 Golang
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL