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实现豆瓣图片下载的方法
May 25 Python
Python实现身份证号码解析
Sep 01 Python
基于Python实现文件大小输出
Jan 11 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
Python 字符串大小写转换的简单实例
Jan 21 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
Python实现的桶排序算法示例
Nov 29 Python
Python网络编程之TCP与UDP协议套接字用法示例
Feb 02 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
django使用LDAP验证的方法示例
Dec 10 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
如何基于python生成list的所有的子集
Nov 11 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 配置文件中open_basedir选项作用
2009/07/19 PHP
php学习之流程控制实现代码
2011/06/09 PHP
解析如何在PHP下载文件名中解决乱码的问题
2013/06/20 PHP
PHP遍历目录并返回统计目录大小
2014/06/09 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
Z-Blog中用到的js代码
2007/03/15 Javascript
JS解密入门 最终变量劫持
2008/06/25 Javascript
javascript object array方法使用详解
2012/12/03 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
node.js实现逐行读取文件内容的代码
2014/06/27 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
基于vue的换肤功能的示例代码
2017/10/10 Javascript
nodejs实现的http、https 请求封装操作示例
2020/02/06 NodeJs
JavaScript 替换所有匹配内容及正则替换方法
2020/02/12 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
Node.js fs模块原理及常见用途
2020/10/22 Javascript
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
python使用openpyxl库修改excel表格数据方法
2018/05/03 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
在pycharm上mongodb配置及可视化设置方法
2018/11/30 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
python三大神器之fabric使用教程
2019/06/10 Python
解决win7操作系统Python3.7.1安装后启动提示缺少.dll文件问题
2019/07/15 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
html5启动原生APP总结
2020/07/03 HTML / CSS
C语言面试题
2015/10/30 面试题
网上开店必备创业计划书
2014/01/26 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
NodeJs使用webpack打包项目的方法详解
2022/02/28 NodeJs
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技