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实现的百度站长自动URL提交小工具
Jun 27 Python
python判断图片宽度和高度后删除图片的方法
May 22 Python
python实现字典(dict)和字符串(string)的相互转换方法
Mar 01 Python
Python进阶_关于命名空间与作用域(详解)
May 29 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
Jun 25 Python
详解Python 中sys.stdin.readline()的用法
Sep 12 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
python实现名片管理器的示例代码
Dec 17 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
MATLAB 如何求取离散点的曲率最大值
Apr 16 Python
对象析构函数__del__在Python中何时使用
Mar 22 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+mysql一个名片库程序
2006/10/09 PHP
PHPMailer 中文使用说明小结
2010/01/22 PHP
PHP中使用crypt()实现用户身份验证的代码
2012/09/05 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
php对包含html标签的字符串进行截取的函数分享
2014/06/19 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
2010/05/27 Javascript
jQuery的:parent选择器定义和用法
2014/07/01 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
2016/06/13 Javascript
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
EasyUI实现下拉框多选功能
2017/11/07 Javascript
javascript中的隐式调用
2018/02/10 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
再谈Angular4 脏值检测(性能优化)
2018/04/23 Javascript
nodejs更改项目端口号的方法
2018/05/13 NodeJs
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
c++生成dll使用python调用dll的方法
2014/01/20 Python
python下实现二叉堆以及堆排序的示例
2017/09/29 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
基于Python的PIL库学习详解
2019/05/10 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
Python实现随机取一个矩阵数组的某几行
2019/11/26 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
css3+jq创作含苞待放的荷花
2014/02/20 HTML / CSS
印度尼西亚综合购物网站:Lazada印尼
2016/09/07 全球购物
妇产医师自荐信
2014/01/29 职场文书
体育课课后反思
2014/04/24 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
2014年学校工会工作总结
2014/12/06 职场文书
python 调用js的四种方式
2021/04/11 Python