zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python使用reportlab画图示例(含中文汉字)

Python中文 使用 示例 汉字 画图
2023-06-13 09:15:13 时间

准备工作

开发环境:python2.6,reportlab

准备中文字体文件:simsun.ttc

代码:

复制代码代码如下:


#!/usr/bin/envpython2.6
#coding:utf-8

importtraceback

fromreportlab.graphics.shapesimportDrawing
fromreportlab.graphics.charts.lineplotsimportLinePlot
fromreportlab.graphics.charts.textlabelsimportLabel
fromreportlab.graphicsimportrenderPDF
fromreportlab.graphics.widgets.markersimportmakeMarker
fromreportlab.pdfbaseimportpdfmetrics,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()