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的即时标记项目练习笔记
Sep 18 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
python递归查询菜单并转换成json实例
Mar 27 Python
详解python使用Nginx和uWSGI来运行Python应用
Jan 09 Python
python实现AES加密解密
Mar 28 Python
Python数据类型之Tuple元组实例详解
May 08 Python
python对象转字典的两种实现方式示例
Nov 07 Python
pytorch 常用线性函数详解
Jan 15 Python
Pycharm修改python路径过程图解
May 22 Python
keras用auc做metrics以及早停实例
Jul 02 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
Oct 19 Python
总结python多进程multiprocessing的相关知识
Jun 29 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 COOKIE及时生效的方法介绍
2014/02/14 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
Laravel多用户认证系统示例详解
2018/03/13 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
JavaScript子窗口ModalDialog中操作父窗口对像
2012/12/11 Javascript
javascript操作css属性
2013/12/30 Javascript
jquery获得同源iframe内body下标签的值的方法
2014/09/25 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
Javascript简写条件语句(推荐)
2016/06/12 Javascript
JS键盘版计算器的制作方法
2016/12/03 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
mui框架 页面无法滚动的解决方法(推荐)
2018/01/25 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
解析vue路由异步组件和懒加载案例
2018/06/08 Javascript
我要点爆”微信小程序云开发之项目建立与我的页面功能实现
2019/05/26 Javascript
js实现课堂随机点名系统
2019/11/21 Javascript
JavaScript多种图形实现代码实例
2020/06/28 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
利用python批量修改word文件名的方法示例
2017/10/17 Python
儿童编程python入门
2018/05/08 Python
解决Python3下map函数的显示问题
2019/12/04 Python
用python实现名片管理系统
2020/06/18 Python
pycharm永久激活超详细教程
2020/10/29 Python
python 实现Requests发送带cookies的请求
2021/02/08 Python
Html5获取高德地图定位天气的方法
2019/12/26 HTML / CSS
澳大利亚当地社区首选的光学商店:1001 Optical
2019/08/24 全球购物
银行职员个人的工作自我评价
2014/02/15 职场文书
企业形象策划方案
2014/05/29 职场文书
校庆口号
2014/06/20 职场文书
世界遗产的导游词
2015/02/13 职场文书
2015年志愿者服务工作总结
2015/04/20 职场文书
英语投诉信范文
2015/07/03 职场文书