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正则表达式re模块详解
Jun 25 Python
Python+django实现简单的文件上传
Aug 17 Python
Python对列表中的各项进行关联详解
Aug 15 Python
python解决pandas处理缺失值为空字符串的问题
Apr 08 Python
Django实现全文检索的方法(支持中文)
May 14 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
Python3爬虫使用Fidder实现APP爬取示例
Nov 27 Python
对Python3 解析html的几种操作方式小结
Feb 16 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
详解python tkinter 图片插入问题
Sep 03 Python
python中的class_static的@classmethod的巧妙用法
Jun 22 Python
python实现简单的聊天小程序
Jul 07 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设计模式之装饰者模式
2012/02/29 PHP
zend Framework中的Layout(模块化得布局)详解
2013/06/28 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
php利用gd库为图片添加水印
2016/11/09 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
JQuery 学习笔记 选择器之一
2009/07/23 Javascript
JS正则表达式获取分组内容的方法详解
2013/11/15 Javascript
解析JavaScript中delete操作符不能删除的对象
2013/12/03 Javascript
分享一则javascript 调试技巧
2015/01/02 Javascript
JavaScript子窗口调用父窗口变量和函数的方法
2015/10/09 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
利用vue写todolist单页应用
2016/12/15 Javascript
详解支持Angular 2的表格控件
2017/01/19 Javascript
jquery实现数字输入框
2017/02/22 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
vue实现购物车结算功能
2020/06/18 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python tempfile模块学习笔记(临时文件)
2014/05/25 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
python3 pygame实现接小球游戏
2019/05/14 Python
python requests使用socks5的例子
2019/07/25 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
英国儿童图书网站:Scholastic
2017/03/26 全球购物
控制工程专业个人求职信
2013/09/25 职场文书
物业工作计划书
2014/01/10 职场文书
长安大学毕业生自我鉴定
2014/01/17 职场文书
出纳工作岗位责任制
2014/02/02 职场文书
年终总结会议主持词
2014/03/17 职场文书
工业设计专业自荐书
2014/06/05 职场文书
高中运动会广播稿
2014/09/16 职场文书
交通安全温馨提示语
2015/07/14 职场文书
大学生活委员竞选稿
2015/11/21 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
pandas进行数据输入和输出的方法详解
2022/03/23 Python