在Python语言中我们是通过利用turtle库来绘图的,turtle中文意思是海龟,turtle库是turtle绘图体系的Python实现,同时turtle库也是Python语言的标准库之一。

绘图的过程其实就是控制海龟移动的过程,相当于我们平时用铅笔画图一样,这个铅笔就相当于海龟,我们通过控制这个铅笔来画出许多美丽的图形。

一.位置

绘制一个图形首先需要一个窗体,在操作系统中表现为一个窗口,在窗口中使用的最小单位是像素,比如我们绘制一条长为100的线段,那么这个线段的长为100像素。

python画箭头plt python怎么画_python画箭头plt


上图所示,在电脑屏幕左上角画蓝色圆圈的是屏幕坐标系的坐标原点(0,0),而画红圈的是窗口坐标系的原点,startx和starty分别是窗口左边缘和上边缘到电脑屏幕边缘的距离,height和width分别是是窗口高和宽。我们用turtle.setup(width,height,startx,starty)函数来描述窗口的位置与大小。要注意的是窗体的高和宽是窗体本身的高和宽,而startx和starty是窗口左上角相对于屏幕左上角的坐标,startx和starty这两个参数可选的。

现在该我们的主角海龟登场了,它也有自己的坐标系,分别是空间坐标系角度坐标系。其中空间坐标系分为绝对坐标海龟坐标,角度坐标系也分为绝对坐标海龟坐标

1.turtle空间坐标系:绝对坐标

python画箭头plt python怎么画_屏幕坐标_02


海龟一开始处于窗口的中心,利用turtle.goto(海龟的横坐标,海龟的纵坐标)函数控制海龟的移动,goto我们可以理解成到达,连起来就是海龟到达。说明一下:下图中的那个箭头就是海龟,呃,好像长得并不像海龟,箭头的方向就是海龟的头朝的方向。

import turtle	
turtle.goto(50,50)		
turtle.goto(100,50)
turtle.goto(150,150)

python画箭头plt python怎么画_屏幕坐标_03


2.turtle空间坐标系:海龟坐标

python画箭头plt python怎么画_屏幕坐标_04


无论海龟怎么运动,它的头朝的那个方向永远是前方。如下图所示,我们先让海龟以沿某一点按40像素的半径长逆时针转了80度,此时海龟的头朝的那个方向为下图的箭头的方向,就不再是之前朝X轴的方向了,这时我们再让这个海龟前进100个像素就得到该图。

import turtle
turtle.circle(40,80)		/*半径为正,表示圆心在海龟的上方,半径为负,表示圆心在海龟的下方*/
turtle.fd(100)

python画箭头plt python怎么画_屏幕坐标_05


3.turtle角度坐标体系:绝对坐标

python画箭头plt python怎么画_ci_06


有了上述的基础,我们也不难理解这个角度坐标系下的绝对坐标,这里先给出一个函数:turtle.seth(角度),意思是让海龟旋转某一角度,记住仅仅是旋转,不改变海龟的位置。

import turtle
turtle.seth(40)	/*数值为正表示逆时针旋转40度*/

python画箭头plt python怎么画_屏幕坐标_07


4.turtle角度坐标系:海龟坐标

python画箭头plt python怎么画_利用Python语言绘图_08


turtle.left(angle)的意思是让海龟向左转过angle度,turtle.right(angle)让海龟右转angle度,这里的左和右是相对于海龟而言。

最基础的一部分讲完了,这里我们总结上述的函数,以便给读者加深印象。
turtle.goto(x,y) 让海龟到达(x,y)处
turtle.bk(d) 让海龟退d个像素
turtle.fd(d) 让海龟前进d个像素
turtle.circle(r,angle) 让海龟以r为半径旋转angle度
turtle.seth(angle) 让海龟原地旋转angle度
turtle.left(angle) 让海龟向左原地旋转angle度
turtle.right(angle) 让海龟向右原地旋转angle度

二.颜色
我们在绘图时不可能只用一种颜色,所以Python提供了RGB色彩模式。RGB其实就是red green blue这三个单词取首字母组合在一起所形成的。不同比例的红色,蓝色和绿色混在一起可以构成世界上所有的颜色,比如天蓝色,棕色,粉红色。RGB每色取值范围是0-255整数或0-1小数。

白色 255,255,255 或 1,1,1
黄色 255,255,0 或1,1,0
蓝色 0,0,255 或 0,0,1
下面给出超链接,在这里就不一一列举了。
RGB色彩 给所绘图形增加颜色要用到turtle.colormode()函数。
例如:turtle.colormode(255,255,255)

三.绘图核心
细心的读者会发现利用上述所讲的各种函数绘画出的是连续的直线或曲线(相当于一笔画),也就是说我们用笔写一行字,但是在写的过程中笔不离纸面,这样我们写出来的字都是连体字,显然影响美观而且别人并不认识。turtle.pendown()和turtle.penup()这两个函数可以解决这个问题。

import turtle
turtle.penup()		/*抬起画笔,海龟在天上飞*/
turtle.fd(100)		/*海龟在天上移动100个像素*/
turtle.pendown()	/*落下画笔,海龟在爬行*/

打印上面4行代码,海龟从窗口中心向前走100个像素到达A点,且A点与窗口中心之间不会留下横迹。turtle.penup()与turtle.pendown()是成对出现的。我们还可以通过turtle.pensize()函数turtle.pencolor()函数分别控制画笔的粗细(海龟的腰围)和画笔的颜色(海龟在涂装)。

import turtle
 turtle.pensize(20)		/*设置画笔的宽度,也就是海龟的腰围*/
 turtle.color("red")		/*设置画笔的颜色*/
 turtle.fd(100)
 turtle.seth(45)
 turtle.bk(200)

python画箭头plt python怎么画_利用Python语言绘图_09

现在介绍最后一个绘图中必不可少的环节:循环。

for<变量>in range(<函数名>)
    <被循环执行的语句>

例:

for j in range(7):	/*注意该条语句结束有一个冒号*/
	print(j)

输出结果:

0	/*从0开始*/
1
2
3
4
5
6	/*结束数字为7减去1*/

我们也可以直接用range(),range(5)输出数字0,1,2,3,4,range(2,5)输出为2,3,4。

四.练习
关于turtle绘图就讲到这里,现在我们来绘制一条蟒蛇。

import turtle
turtle.penup()
turtle.bk(100)
turtle.pendown()
turtle.pensize(30)
turtle.pencolor("blue")
turtle.seth(-40)
for j in range(5):
	turtle.circle(40,80)
	turtle.circle(-40,80)
turtle.circle(40,40)
turtle.fd(50)
turtle.circle(15.180)
turtle.fd(30)

图形如下

python画箭头plt python怎么画_Python_10