5.1绘制图形,第5章绘图及图像处理5.1

文件 1
绘制图形 5.1.1用画布组件绘图 视频录像 画布是图形用户界面tkinter的组件,是一个矩形区域,用于绘制图形或作为容器放置其他组件。

1.创建画布对象创建画布对象的基本语法形式如下: w=Canvas(master,option=value,…) 其中:•master:代表父窗口。
•options:为属性参数,其意义如表5.1所示。
Option参数bgheightwidth 表5.1 画布的常用参数 说明背景颜色画布的高画布的宽
2.图形的绘制方法Canvas对象包含了大量的绘图方法,表5.2列出了常用的绘图方法。
表5.2Canvas对象常用的绘图方法 方法create_line(x1,y1,x2,y2)create_rectangle(x1,y1,x2,y2)create_polygon(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6)create_oval(x1,y1,x2,y2,fill='color') create_arc(x1,y1,x2,y2,start=s0,extent=s) create_image(w,h,anchor=NE,image=filename)move(obj,x,y) 说明绘制一条从(x1,y1)到(x2,y2)的直线绘制一个左上角为(x1,y1),右下角为(x2,y2)的矩形绘制一个顶点为(x1,y1),(x2,y2),…,的多边形 绘制一个左上角为(x1,y1),右下角为(x2,y2)的外接矩形包围的圆,fill为填充颜色绘制在左上角为(x1,y1),右下角为(x2,y2)的外接矩形所包围的一段圆弧,圆弧角度为s,从s0开始在w宽h高的矩形区域内,显示文件名为filename的图像 移动组件obj。
x为水平方向变化量,y为垂直方向变化量 Python程序设计案例教程——从入门到机器学习(微课版) 【例5-1】绘制几何图形示例。
程序代码如下: 86 ''' 窗体中的画布示例: 绘制小球和扇形 ''' importtkinter importtkinter.messagebox win=tkinter.Tk()win.title('画布示例')win.geometry('400×200') #定义窗体标题#定义窗体的大小400×200像素 can=tkinter.Canvas(win,height=200,width=400) id=can.create_line(15,15,190,15) io1=can.create_oval(50,50,100,100,fill='blue') io2=can.create_oval(59,59,68,68,fill='white') #定义画布#画一条直线#画一蓝色圆#画一白色小圆 coord=15,120,210,220arc=can.create_arc(coord,extent=150,fill="green")#画一个扇形 can.pack() win.mainloop() 程序运行结果如图5.1所示。
图5.1绘制几何图形 【例5-2】绘制笑脸。
程序代码如下: '''窗体中的画布示例:绘制笑脸 '''importtkinterimporttkinter.messageboxwin=tkinter.Tk()win.title('画布示例') win.geometry('250×250') can=tkinter.Canvas(win,height=250,width=250)io1=can.create_oval(35,30,210,210,fill='yellow') #定义画布#画一黄色圆 io2=can.create_oval(70,70,180,180,fill='black') io3=can.create_oval(65,70,185,170,outline='yellow',fill='yellow') io4=can.create_oval(80,100,110,130,fill='black') io5=can.create_oval(150,100,180,130,fill='black') can.pack()win.mainloop() 程序运行结果如图5.2所示。
【例5-3】显示图像示例。
程序代码如下: 图5.2绘制笑脸 importtkinter.messageboxfromtkinterimport* win=tkinter.Tk()win.title('绘图示例')win.geometry('200×200') can=tkinter.Canvas(win, #定义窗体标题#定义窗体的大小200×200像素 height=200,width=200)# 定义画布 filename=PhotoImage(file="test.gif") image=can.create_image(150,10,anchor=NE,image=filename) can.pack() 87 win.mainloop() 第 程序运行结果如图5.3所示。

5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) 88 图5.3显示图像 5.1.2用turtle模块绘图 turtle模块是Python中的一个简单绘图工具,用它绘图非常方便。
使用turtle绘制图形时,它会显示出一个箭头(又称为“海龟”),该箭头在一个横轴为x、纵轴为y的坐标系中,从原点(0,0)位置开始,按照所绘图形的轨迹绘制图形。
下面介绍turtle模块的一些基础知识。
1.turtle模块的画布Canvas画布Canvas是turtle用于绘图区域,可以设置它的大小和初始位置。

(1)设置画布大小 turtle.screensize(canvwidth=None,canvheight=None,bg=None) 其中,参数canvwidth为画布的宽(单位像素);canvheight为高;bg为背景颜色。
例如: turtle.screensize(800,600,"green") 当screensize()函数无参数时,则返回一个默认为宽400,高300像素的画布即 turtle.screensize()#返回默认大小(400,300)
(2)设置画布初始位置 turtle.setup(width=0.5,height=0.75,startx=None,starty=None) 其中参数:width,height:当宽和高为整数时,表示像素;为小数时,表示占据屏幕的比例。
(startx,starty):表示矩形窗口左上角顶点的坐标位置,如果为空,则位于屏幕中心。
例如: turtle.setup(width=800,height=800,startx=100,starty=100)turtle.setup(width=0.6,height=0.6)#画布位于屏幕中心 2.turtle模块的基本指令操纵turtle模块的“海龟”绘图有许多命令,这些命令分为两种:一种为画笔控制命 令;另一种为运动命令。

(1)画笔控制命令turtle模块的画笔控制命令如表5.3所示。
画笔控制命令 turtle.down()turtle.up()turtle.pensize(width)turtle.color(colorstring)turtle.fillcolor(colorstring)turtle.fill(true)turtle.fill(false)turtle.circle(radius,extent) 表5.3画笔控制命令 说明画笔落下,移动时绘制图形画笔抬起,移动时不绘制图形设置画笔的宽度,即绘制图形线条的宽度设置画笔的颜色,即绘制图形的颜色设置绘制图形的填充颜色绘制填充图形绘制线条图形绘制一个圆形,其中radius为半径;extent为角度。
例如,若extent为180,则画一个半圆;如画一个圆形,则不必写第二个参数
(2)运行命令turtle模块的运行命令如表5.4所示。
运动命令 turtle.forward(d)turtle.backward(d)turtle.right(degree)turtle.left(degree)turtle.goto(x,y)turtle.stamp()turtle.speed(speed)turtle.clear()turtle.reset()turtle.undo()turtle.isvisible()turtle.stamp()turtle.write('str')turtle.write(str[,font=("font-name",font_size,"font_type")]) 表5.4运行命令 说明向前移动距离,d代表距离向后移动距离,d代表距离向右转动多少角度向左转动多少角度将画笔移动到坐标为(x,y)的位置绘制当前图形画笔绘制的速度,取值范围为[0,10]的整数,值越大速度越快清空turtle画的笔迹清空窗口,重置turtle的状态为起始状态撤销上一个turtle动作设置当前turtle是否可见复制当前图形写字符串'str'写文本,str为文本内容,font是字体的参数,里面分别为字体名称、大小和类型;font为可选项,font的参数也是可选项 【例5-4】绘制一个边长为60的三角形图形。
程序代码如下: importturtleimporttimea=60 forninrange(1,4): 89 第5章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) turtle.forward(a) turtle.left(120) turtle.speed
(1) 90 time.sleep
(5) 程序运行结果如图5.4所示。
图5.4绘制三角形图形 5.2数字图像处理基础 5.2.1Python图像处理类库PIL 视频录像 图像处理类库(PythonImagingLibrary,PIL)提供了通用的图像处理功能,以及大量实用的基本图像操作,如图像缩放、裁剪、旋转、颜色转换等。
由于PIL仅支持Python2.7以前版本,Python3.x的兼容版本称为Pillow。

1.安装Pillow模块在命令行窗口中使用pip安装Pillow模块,其命令为: pipinstallpillow 安装过程如图5.5所示。
图5.5安装Pillow模块
2.Pillow模块的方法Pillow模块提供了大量用于图像处理的方法,通过创建的图像对象可以调用这些图像 处理方法。
Pillow模块图像处理的常用方法如表5.5所示。
表5.5Pillow模块图像处理的常用方法 方法Image.open("图像文件名")show()save("文件名")resize(宽高元组)thumbnail()rotate()transpose(Image.FLIP_LEFT_RIGHT)transpose(Image.FLIP_TOP_BOTTOM)crop(矩形区域元组)paste(裁剪图像对象,矩形区域)ImageGrab.grab(矩形区域元组)filter(ImageFilter.EDGE_ENHANCE)filter(ImageFilter.BLUR)filter(ImageFilter.FIND_EDGES)point(lambdai:i*r)formatsizegetpixel(坐标元组) putpixel((元组1),(元组2))split() Image.merge(im.mode,(r,g,b))enhance(n) 说明打开图像文件,返回图像对象显示图像保存图像文件图像缩放创建图像的缩略图旋转图像图像水平翻转图像垂直翻转裁剪图像粘贴图像屏幕截图,若区域为空,则表示全屏幕截图图像增强图像模糊图像边缘提取图像点运算。
r>
1,图像变亮;r<
1,图像变暗查看图像格式的属性值查看图像大小的属性值,格式为(宽度,高度)读取像素的属性值,参数为(x,y)坐标元组,返回值为红、绿、蓝三色分量的值元组2的值改变目标像素元组1的颜色值将彩色图像分离为红、绿、蓝三个分量通道。
例如:r,g,b=im.split()将红、绿、蓝三个分量通道合并成一个彩色图像对比度增强为原来的n倍(n为实数)。
例如:img=ImageEnhance.Contrast(img)img=im.enhance(1.5)#对比度增强为原图的1.5倍 5.2.2图像处理技术 利用PIL中的函数,可以从大多数图像格式的文件中读取数据,然后写入最常见的图像格式文件中。
PIL中最重要的模块为Image。
要读取一幅图像,可以使用下列语句: fromPILimportImageimg=Image.open("img1.gif") 上述代码的返回值pil_im是一个PIL图像对象。
可以对这个PIL图像对象进行各种 处理。
下面介绍几个典型的图像处理的应用示例。

1.图像的打开、旋转和显示 【例5-5】打开和显示图像示例。
91 程序代码如下: 第 importtkinter
5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) fromPILimportImage,ImageTk win=tkinter.Tk() 92 win.title('图像显示') win.geometry('300×300') #定义窗体的大小300×300像素 can=tkinter.Canvas(win,bg='white',width=300,height=300) #创建画布组件#指定画布组件的背景色#指定画布组件的宽度#指定画布组件的高度 image=Image.open("dukou.jpg") #打开图像文件 img=ImageTk.PhotoImage(image) #获取图像像素 can.create_image(160,120,image=img)#将图像添加到画布组件中 can.pack() #将画布组件添加到主窗口 win.mainloop() 程序运行结果如图5.6所示。
图5.6打开和显示图像
2.建立图像的缩略图使用PIL可以方便地创建图像的缩略图。
PIL图像对象的thumbnail(size)方法将图像转换成由元组参数设定大小的缩略图。
【例5-6】建立图像缩略图示例。
程序代码如下: importtkinterfromtkinterimportLabelfromPILimportImage,ImageTkimportglob,os win=tkinter.Tk()win.title('建立图像缩略图') win.geometry('200×200') #定义窗体的大小400×200像素 defimgshow():size=64,64 #设置缩略图尺寸的元组参数 forinfileinglob.glob("dukou.jpg"): file,ext=os.path.splitext(infile) im=Image.open(infile) im.thumbnail(size)im.save(file+"
(1).jpg","JPEG") #保存缩略图为dukou
(1).jpg photo=ImageTk.PhotoImage(file='dukou
(1).jpg') label=Label(win,image=photo).pack() label.image=photo tkinter.Button(win,text='建立图像缩略图'mand=imgshow).pack()win.mainloop() 运行程序,单击按钮后,将当前文件夹中名为dukou.jpg的图像文件生成64×64像素的缩略图,如图5.7所示。
图5.7生成图像缩略图
3.增强图像处理使用PIL模块可以方便地对图像进行各种处理。
例如,应用ImageFilter.EDGE_ENHANCE属性可以将图像的对比度增强。
【例5-7】增加图像的对比度示例。
程序代码如下: filter()方法的 importtkinterfromtkinterimportLabelfromPILimportImage,ImageTk,ImageEnhance,ImageFilter win=tkinter.Tk()win.title('增强图像') win.geometry('400×200') 93 #定义窗体的大小400×200像素 第
5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) photo=Image.open('dukou.jpg')img1=ImageTk.PhotoImage(photo)label_1=Label(win,image=img1) #获取图片像素#显示原图 94defimgshow(): img=photo.filter(ImageFilter.EDGE_ENHANCE) img2=ImageTk.PhotoImage(img) #获取图片像素 label_2=Label(win,image=img2).grid(row=1,column=1) #显示增强后的图 label_2.image=img2 button=tkinter.Button(win,text='增强图像处理'mand=imgshow) button.grid(row=0,column=0,columnspan=2)label_1.grid(row=1,column=0) win.mainloop() 程序运行结果如图5.8所示。
图5.8图像增强 5.3案例精选 【例5-8】动画效果的签名。
程序代码如下: importturtle turtle.color('red','green')turtle.pensize(5)turtle.goto(0,0)turtle.speed(10)foriinrange(15): turtle.forward(100) 视频录像 turtle.right(150)turtle.up() turtle.goto(100,-120)turtle.color('black')turtle.write("Python爱好者",font="隶书-36bold")turtle.up() turtle.goto(135,-140)turtle.color('black')turtle.write("2018年1月1日",font="隶书-18")turtle.up()turtle.goto(240,-160)turtle.color('black')turtle.write(".")turtle.done() 程序运行结果如图5.9所示。
图5.9绘制有动画效果的签名 【例5-9】绘制一个指针式时钟。
程序代码如下: importturtlefromdatetimeimport*#抬起画笔,向前运动一段距离放下defSkip(step): turtle.penup()turtle.forward(step)turtle.pendown()defmkHand(name,length):#注册Turtle形状,建立表针Turtleturtle.reset()Skip(-length*0.1)#开始记录多边形的顶点。
当前的乌龟位置是多边形的第一个顶点turtle.begin_poly()turtle.forward(length*1.1) 95 第5章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) #停止记录多边形的顶点。
当前的乌龟位置是多边形的最后一个顶点。
将最后一个顶点与第一个#顶点相连 turtle.end_poly() 96 #返回最后记录的多边形 handForm=turtle.get_poly() turtle.register_shape(name,handForm) defInit(): globalsecHand,minHand,hurHand,printer#重置Turtle指向北 turtle.mode("logo")#建立三个表针Turtle并初始化 mkHand("secHand",135) mkHand("minHand",125) mkHand("hurHand",90) secHand=turtle.Turtle() secHand.shape("secHand") minHand=turtle.Turtle() minHand.shape("minHand") hurHand=turtle.Turtle() hurHand.shape("hurHand") forhandinsecHand,minHand,hurHand: hand.shapesize(1,1,3) hand.speed
(0)#建立输出文字Turtle printer=turtle.Turtle()#隐藏画笔的turtle形状 printer.hideturtle() printer.penup() defSetupClock(radius):#建立表的外框 turtle.reset() turtle.pensize
(7) foriinrange(60): Skip(radius) ifi%5==0: turtle.forward(20) Skip(-radius-20) Skip(radius+20)ifi==0: turtle.write(int(12),align="center",font=("Courier",14,"bold"))elifi==30: Skip(25)turtle.write(int(i/5),align="center",font=("Courier",14,"bold")) Skip(-25)elif(i==25ori==35): Skip(20)turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))Skip(-20)else:turtle.write(int(i/5),align="center",font=("Courier",14,"bold"))Skip(-radius-20)else:turtle.dot
(5)Skip(-radius)turtle.right(6)defWeek(t):week=["星期一","星期二","星期三",\"星期四","星期五","星期六","星期日"]returnweek[t.weekday()]defDate(t):y=t.yearm=t.monthd=t.dayreturn"%s%d%d"%(y,m,d)defTick():#绘制表针的动态显示t=datetime.today()second=t.second+t.microsecond*0.000001 minute=t.minute+second/60.0 hour=t.hour+minute/60.0secHand.setheading(6*second)minHand.setheading(6*minute)hurHand.setheading(30*hour) turtle.tracer(False) printer.forward(65) printer.write(Week(t),align="center", font=("Courier",14,"bold")) printer.back(130) printer.write(Date(t),align="center", font=("Courier",14,"bold")) printer.home() turtle.tracer(True) #100ms后继续调用tick 97 turtle.ontimer(Tick,100) 第 de#f打ma开i/n关()闭:龟动画,并为更新图纸设置延迟
5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) turtle.tracer(False) Init() SetupClock(160) 98 turtle.tracer(True) Tick() turtle.mainloop() if__name__=="__main__":main() 程序运行结果如图5.10所示。
图5.10指针式时钟 画布Canvas类可以用于设计动画,使用move(tags,dx,dy)方法实现移动图片或文字等组件。
canvas.update()为刷新界面,重新显示画布。
【例5-10】用方向键移动小矩形块。
程序代码如下: importtimefromtkinterimport* x=50y=50 #
(1)定义窗口win=Tk()win.title("移动小矩形块")#
(2)定义画布 canvas=Canvas(win,width=400,height=400)canvas.pack()#显示画布 #
(3)定义矩形块rect=canvas.create_rectangle(x,y,x+30,y+30,fill='red')print(rect) #
(4)定义移动小矩形的函数 defmoveRect(event): ifevent.keysym=='Up': canvas.move(rect,
0,-3) elifevent.keysym=='Down': canvas.move(rect,
0,+3) elifevent.keysym=='Left': canvas.move(rect,-3,0) elifevent.keysym=='Right': canvas.move(rect,3,0) win.update() #界面刷新 time.sleep(0.05) #休眠 Keysym==键值(方向键)move(组件,x坐标增量,y坐标增量) #
(5)绑定方向键canvas.bind_all('',moveRect)canvas.bind_all('',moveRect)canvas.bind_all('',moveRect)canvas.bind_all('',moveRect) 绑定键盘事件 win.mainloop() 程序运行结果如图5.11所示。
图5.11用方向键移动小矩形块 【例5-11】设计一个小球遇到窗体边缘或挡板则弹回来的动画程序。
99 程序代码如下: 第 fromtkinterimport*
5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) importrandomimporttime 100 classBall: #小球的类 def__init__(self,canvas,paddle,color): self.canvas=canvas #传递画布值 self.paddle=paddle #把挡板传递进来 self.id=canvas.create_oval(10,10,35,35,fill=color)#画椭圆并保存其ID self.canvas.move(self.id,245,100) start=[-
3,-2,-1,1,2,3]random.shuffle(start)#随机化列表 self.x=start[0] self.y=-3self.canvas_heigh=self.canvas.winfo_height() #获取窗口高度并保存 self.canvas_width=self.canvas.winfo_width() defdraw(self): self.canvas.move(self.id,self.x,self.y)#返回相应ID代表的图形的当前坐标(左上角和右上角坐标) pos=self.canvas.coords(self.id)#使得小球不会超出窗口 pad=self.canvas.coords(self.paddle.id) #获取挡板的坐标 ifpos[1]<=0: self.y=
3 ifpos[3]>=self.canvas_heighor(pos[3]>=pad[1]and\ pos[2]>=pad[0]andpos[2]<=pad[2]): self.y=-
3 ifpos[0]<=0: self.x=
3 ifpos[2]>=self.canvas_width: self.x=-
3 classPaddle:#挡板的类def__init__(self,canvas,color):self.canvas=canvasself.color=colorself.id=canvas.create_rectangle(0,0,100,10,fill=color)self.canvas.move(self.id,200,300)self.canvas_width=self.canvas.winfo_width()self.l=0self.r=
0 defdraw(self):pos=self.canvas.coords(self.id)ifpos[0]<=0:self.l=
0 ifpos[2]>=self.canvas_width:self.r=
0 defturn_left(self,event):self.canvas.move(self.id,self.l,0)self.l=-20 defturn_right(self,event): self.canvas.move(self.id,self.r,0) self.r=20 tk=Tk() tk.title('Game')tk.resizable(0,0)tk.wm_attributes('most',1) #使得窗口大小不可调整#包含画布的窗口放在其他窗口的前面 canvas=Canvas(tk,width=500,height=400,bd=0,highlightthickness=0)#后面两个参数去掉边框 canvas.pack() tk.update() paddle=Paddle(canvas,'blue') ball=Ball(canvas,paddle,'red') canvas.bind_all('',paddle.turn_left)canvas.bind_all('',paddle.turn_right) #绑定方向键 while1:ball.draw()paddle.draw()tk.update_idletasks()tk.update()time.sleep(0.01) #快速重画屏幕 运行程序,红色小球一直处于运行状态,遇到墙壁(窗体边缘)或挡板则按相反路径弹回来,如图5.12所示。
图5.12小球碰撞游戏 101 第5章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版) 【例5-12】应用图像处理技术,编写一个简易图像处理器。
为了实现更多的图像处理功能,这里安装一个Python系统专业绘图库模块matplotlib。
通过matplotlib,开发者可以仅需要几行代码,便可以方便地进行图像处理,也可以生成绘102图、直方图、功率谱、条形图、散点图等。
可以用pip安装matplotlib模块,其安装命令如下: pipinstallmatplotlib 程序代码如下: importtkinterfromtkinterimport*fromPILimportImageimportmatplotlib.pyplotasplt #定义窗体 win=Tk()win.title("简易图像处理器") #定义标题lab=Label(win,text='简易图像处理器',font=('Times','20','bold')) lab.grid(row=0,column=0,columnspan=5) #定义空白标签labss=Label(win,text="",width=50,height=1)labss.grid(row=3,column=0,columnspan=5) #定义显示图像信息的文本框s=StringVar()txt=Entry(win,width=50,font=('宋体','10'),ariable=s)txt.grid(row=4,column=0,columnspan=5) #定义图像对象 img=Image.open('dukou.gif')plt.figure("图像处理") #显示原像函数_show(): plt.subplot(2,2,1),plt.title('origin')plt.imshow(img)plt.axis('off')plt.show() #区域分成1行2列,第
1 #查看图像信息函数_info(): plt.imshow(img)s.set('图片的尺寸:'+str(img.size)+'图片的格式:'+str(img.format)) #转换灰度函数_gray(): plt.subplot(2,2,2),plt.title('gray')gray=img.convert('L')plt.imshow(gray,cmap='gray')plt.axis('off')plt.show() #区域分成1行2列,第2#转换成灰度 #裁剪图片函数_roi(): box=(80,100,260,300)roi=img.crop(box)plt.subplot(2,2,3),plt.title('crop')plt.imshow(roi),plt.axis('off')plt.show() #区域分成1行2列,第
3 #图片左右翻转函数_trans(): plt.subplot(2,2,4),plt.title('trans')dst=img.transpose(Image.FLIP_LEFT_RIGHT)#img.rotate(45)#顺时针旋转45°plt.imshow(dst)plt.axis('off')plt.show() #区域分成1行2列,第4#左右翻转 #定义按钮btn_show=Button(win,text='显示图像',_show) btn_show.grid(row=2,column=0) btn_show=Button(win,text='查看图像信息',_info)btn_show.grid(row=2,column=1) btn_show=Button(win,text='彩色转灰度',_gray)btn_show.grid(row=2,column=2) btn_show=Button(win,text='裁剪图片',_roi)btn_show.grid(row=2,column=3) btn_show=Button(win,text='图片水平翻转',_trans) 103 btn_show.grid(row=2,column=4) 第 win.mainloop()
5 章 科绘图及图像处理 Python程序设计案例教程——从入门到机器学习(微课版)程序运行结果如图5.13所示。
104 (a)单击按钮,显示图像处理结果 (b)程序运行窗体 图5.13简易图像处理器 【例5-13】应用matplotlib模块绘制指数曲线。

(1)首先用arange()函数生成一个等差数列的数组。
arange()函数的一般格式为: arange(初值,终值,等差值) 例如,函数arange(0,10,2)所创建的等差数列为[2,4,6,8]。

(2)应用matplotlib模块plt类的plot()方法绘制指数曲线图。
程序代码如下: importnumpyasnpimportmatplotlib.pyplotaspltt=np.arange(0,5,0.2)#生成等差数列,其中等差值为0.2plt.plot(t,t,'r--',t,t**
2,'bs',t,t**
3,'g^')#绘制指数曲线plt.show() 程序运行结果如图5.14所示。
图5.14绘制曲线图形 习题5
1.绘制一个带阴影的小矩形块。

2.设计一个图片浏览器,单击“上一张”按钮,则显示前一张图片,单击“下一张”按钮,则显示后一张图片。
105 第5章科绘图及图像处理

标签: #文件 #烟雾 #文件 #文件 #天正 #编辑器 #cad #箭头