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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
跟老齐学Python之有容乃大的list(1)
Sep 14 Python
详细解析Python中__init__()方法的高级应用
May 11 Python
python安装oracle扩展及数据库连接方法
Feb 21 Python
Python切片操作实例分析
Mar 16 Python
浅谈Python中重载isinstance继承关系的问题
May 04 Python
python requests 库请求带有文件参数的接口实例
Jan 03 Python
numpy中三维数组中加入元素后的位置详解
Nov 28 Python
Python类继承和多态原理解析
Feb 05 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
Python语言编写智力问答小游戏功能
Oct 13 Python
使用python求解迷宫问题的三种实现方法
Mar 17 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读取和编写XML DOM的实现代码
2011/02/03 PHP
php socket客户端及服务器端应用实例
2014/07/04 PHP
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
event对象的方法 兼容多浏览器
2009/06/27 Javascript
ExtJS 2.0 GridPanel基本表格简明教程
2010/05/25 Javascript
基于jquery的获取浏览器窗口大小的代码
2011/03/28 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery中position()方法用法实例
2015/01/16 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
javascript强制点击广告的方法
2015/02/06 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
可输入文字查找ajax下拉框控件 ComBox的实现方法
2016/10/25 Javascript
vue.js绑定class和style样式(6)
2016/12/09 Javascript
javascript常用的设计模式
2017/02/09 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
xmlplus组件设计系列之按钮(2)
2017/04/26 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
JavaScript数组基于交换的排序示例【冒泡排序】
2018/07/21 Javascript
Vue实现表格中对数据进行转换、处理的方法
2018/09/06 Javascript
详解vuex commit保存数据技巧
2018/12/25 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
2019/07/31 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
原生javascript如何实现共享onload事件
2020/07/03 Javascript
速记Python布尔值
2017/11/09 Python
详解Python requests 超时和重试的方法
2018/12/18 Python
Django后台admin的使用详解
2019/07/08 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
金山毒霸系列的笔试题
2013/04/13 面试题
《我的第一本书》教学反思
2014/02/15 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
先进个人事迹材料范文
2014/12/30 职场文书