Python的reportlab专门将数据使用生成PDF中的图形和文档功能,

下载ReportLab

https://pypi.python.org/simple/reportlab/

http://www.reportlab.com/software/opensource/rl-toolkit/download/

生成一个简单的helloworld

  1. from reportlab.graphics.shapes import Drawing, String
  2. from reportlab.graphics import renderPDF
  3.  
  4. d = Drawing(100, 100)
  5. s = String(50, 50, 'Hello, world!', textAnchor='middle')
  6. d.add(s)
  7.  
  8. renderPDF.drawToFile(d, 'hello.pdf', 'A simple PDF file')

三条折线

  1. from reportlab.lib import colors
  2. from reportlab.graphics.shapes import *
  3. from reportlab.graphics import renderPDF
  4.  
  5. data = [
  6. # Year Month Predicted High Low
  7. (2007, 8, 113.2, 114.2, 112.2),
  8. (2007, 9, 112.8, 115.8, 109.8),
  9. (2007, 10, 111.0, 116.0, 106.0),
  10. (2007, 11, 109.8, 116.8, 102.8),
  11. (2007, 12, 107.3, 115.3, 99.3),
  12. (2008, 1, 105.2, 114.2, 96.2),
  13. (2008, 2, 104.1, 114.1, 94.1),
  14. (2008, 3, 99.9, 110.9, 88.9),
  15. (2008, 4, 94.8, 106.8, 82.8),
  16. (2008, 5, 91.2, 104.2, 78.2),
  17. ]
  18.  
  19. drawing = Drawing(200, 150)
  20.  
  21. pred = [row[2]-40 for row in data]
  22. high = [row[3]-40 for row in data]
  23. low = [row[4]-40 for row in data]
  24. times = [200*((row[0] + row[1]/12.0) - 2007)-110 for row in data]
  25.  
  26. drawing.add(PolyLine(zip(times, pred), strokeColor=colors.blue))
  27. drawing.add(PolyLine(zip(times, high), strokeColor=colors.red))
  28. drawing.add(PolyLine(zip(times, low), strokeColor=colors.green))
  29.  
  30. drawing.add(String(65, 115, 'Sunspots', fontSize=18, fillColor=colors.red))
  31.  
  32. renderPDF.drawToFile(drawing, 'report1.pdf', 'Sunspots')

最终的sunspot

  1. from urllib import urlopen
  2. from reportlab.graphics.shapes import *
  3. from reportlab.graphics.charts.lineplots import LinePlot
  4. from reportlab.graphics.charts.textlabels import Label
  5. from reportlab.graphics import renderPDF
  6.  
  7. URL = 'http://www.swpc.noaa.gov/ftpdir/weekly/Predict.txt'
  8. COMMENT_CHARS = '#:'
  9.  
  10. drawing = Drawing(400, 200)
  11. data = []
  12. for line in urlopen(URL).readlines():
  13. if not line.isspace() and not line[0] in COMMENT_CHARS:
  14. data.append([float(n) for n in line.split()])
  15.  
  16. pred = [row[2] for row in data]
  17. high = [row[3] for row in data]
  18. low = [row[4] for row in data]
  19. times = [row[0] + row[1]/12.0 for row in data]
  20.  
  21. lp = LinePlot()
  22. lp.x = 50
  23. lp.y = 50
  24. lp.height = 125
  25. lp.width = 300
  26. lp.data = [zip(times, pred), zip(times, high), zip(times, low)]
  27. lp.lines[0].strokeColor = colors.blue
  28. lp.lines[1].strokeColor = colors.red
  29. lp.lines[2].strokeColor = colors.green
  30.  
  31. drawing.add(lp)
  32.  
  33. drawing.add(String(250, 150, 'Sunspots',
  34. fontSize=14, fillColor=colors.red))
  35.  
  36. renderPDF.drawToFile(drawing, 'report2.pdf', 'Sunspots')

reportlab使用示例:文字和图片的更多相关文章

  1. C#操作word模板插入文字、图片及表格详细步骤

    c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

  2. Android(java)学习笔记139:在TextView组件中利用Html插入文字或图片

    首先我们看看代码: 1.activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  3. PHP 文字,图片水印,缩略图,裁切成小图(大小变小)

    文字水印基本思路:1.用getimagesize()获取图片的信息(as:大小,属性等):2.根据图片信息用imagecreatefromjpeg ()/imagecreatefromgif/imag ...

  4. Android(java)学习笔记81:在TextView组件中利用Html插入文字或图片

    1. TextView中利用Html插入文字或者图片: 首先我们看看代码: (1)activity_main.xml: <LinearLayout xmlns:android="htt ...

  5. PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法,php/thinkphp实现微信分享自定义文字和图片

    PHP---微信JS-SDK获取access_token/jsapi_ticket/signature权限签名算法, php/thinkphp实现微信分享自定义文字和图片. 一.先看微信JS-SDK文 ...

  6. [转]C#操作word模板插入文字、图片及表格详细步骤

    c#操作word模板插入文字.图片及表格 1.建立word模板文件 person.dot用书签 标示相关字段的填充位置 2.建立web应用程序 加入Microsoft.Office.Interop.W ...

  7. C#爬取微博文字、图片、视频(不使用Cookie)

    前两天在网上偶然看到一个大佬OmegaXYZ写的文章,Python爬取微博文字与图片(不使用Cookie) 于是就心血来潮,顺手撸一个C#版本的. 其实原理也很简单,现在网上大多数版本都需要Cooki ...

  8. Android开发学习之路-带文字的图片分享

    有用过微信分享SDK的都应该知道,微信分享到朋友圈的时候是不能同时分享图片和文字的,只要有缩略图,那么文字就不会生效.那么问题就来了,如果我们想把APP内的某些内容连带图片一起分享到微信,是不是没办法 ...

  9. Android实现自定义带文字和图片的Button

    Android实现自定义带文字和图片的Button 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就 ...

  10. iOS·UIButton如何文字在下图片在上

    创建子类继承自UIButton,在layoutSubviews方法中改变文字和图片的位置就可以了,同理,稍作改变,可以写出文字在上图片在下.本文只给出文字在下图片在上的代码 -(void)layout ...

随机推荐

  1. asp.net ajax 简单案例

    第一步先引用 scriptManager <asp:UpdatePanel ID="UpdatePanelGuanZhu" runat="server"& ...

  2. SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

    SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...

  3. 安卓代码迁移:ActionBarActivity: cannot be resolved to a type

    参考链接:http://stackoverflow.com/questions/18830736/actionbaractivity-cannot-be-resolved-to-a-type in e ...

  4. Eclipse 插件ibeetl

    启动Eclipse 打开菜单栏按一下菜单路径依次打开 Help -> Install New Softwave… ->点击Add按钮弹出一个对话框 弹出的对话框中Name随意填写,如填写“ ...

  5. CodeForces 356A_(set应用,线段树)

    A. Knight Tournament time limit per test 3 seconds memory limit per test 256 megabytes input standar ...

  6. Hadoop-2.2.0集群部署时live nodes数目不对的问题

    关于防火墙,hadoop本身配置都确定没任何问题,集群启动不报错,但打开50070页面,始终live nodes数目不对,于是我尝试/etc/hosts文件配置是否存在逻辑的错误: 127.0.0.1 ...

  7. py西游公关之模块

    Py西游攻关之模块   模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可 ...

  8. web自动化的行为驱动

    1.新建一个features包,在新建一个steps包 2.新建一个register.features文件 #coding=utf-8Feature:Register User As a develo ...

  9. eas之动态刷新Table

    如何刷新表体数据行(表头不变) 示例1:删除所有表体行,并重新发取数事件该方法不会修改原先的绑定信息table.removeRows(); 示例2:删除所有表体行,修改绑定信息并重新取数指定新的que ...

  10. SQL第二节课

    SQL练习题 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的 ...