利用Python语言绘图

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

绘图的过程其实就是控制海龟移动的过程,相当于我们平时用铅笔画图一样,这个铅笔就相当于海龟,我们通过控制这个铅笔来画出许多美丽的图形。
一.位置
绘制一个图形首先需要一个窗体,在操作系统中表现为一个窗口,在窗口中使用的最小单位是像素,比如我们绘制一条长为100的线段,那么这个线段的长为100像素。
在这里插入图片描述
上图所示,在电脑屏幕左上角画蓝色圆圈的是屏幕坐标系的坐标原点(0,0),而画红圈的是窗口坐标系的原点,startx和starty分别是窗口左边缘和上边缘到电脑屏幕边缘的距离,height和width分别是是窗口高和宽。我们用turtle.setup(width,height,startx,starty)函数来描述窗口的位置与大小。要注意的是窗体的高和宽是窗体本身的高和宽,而startx和starty是窗口左上角相对于屏幕左上角的坐标,startx和starty这两个参数可选的。

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

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

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

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

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

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

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

在这里插入图片描述
4.turtle角度坐标系:海龟坐标
在这里插入图片描述
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) 

在这里插入图片描述

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

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)

图形如下
在这里插入图片描述

为了对已有的垃圾邮件检测模型进行性能可视化展示,我们可以使用matplotlib库来绘制诸如混淆矩阵、ROC曲线等图表。以下是基于上述代码的一个可能的续写示例,专注于添加必要的包并实现绘制这些图形的功能: ```python import matplotlib.pyplot as plt from sklearn.metrics import confusion_matrix, roc_curve, auc # 假设已有变量:y_true - 实际类别;y_pred_prob - 模型预测的概率值 # 此处简化处理,直接使用之前得到的预测结果pred作为示例, # 实际应用中应该从predict函数返回的概率值来进行更准确的分析 y_true = true y_pred_prob = [1-p, p] for p in pred # 这里仅为示意,请替换为实际获得的概率值 # 混淆矩阵 cm = confusion_matrix(y_true, pred) plt.matshow(cm) plt.title('Confusion matrix') plt.colorbar() plt.ylabel('True label') plt.xlabel('Predicted label') plt.show() # ROC曲线 fpr, tpr, thresholds = roc_curve(y_true, y_pred_prob) roc_auc = auc(fpr, tpr) plt.figure() lw = 2 plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show() ``` 注意:上述代码片段假设已经存在`y_true`表示真实的标签数据,以及由模型给出的预测概率值列表`y_pred_prob`。在这个例子中我们用了一个简化的方法来代替真实的预测概率值,你需要根据实际情况调整这部分逻辑以反映你的模型输出的实际概率。此外,还需要安装matplotlib和其他依赖项才能运行以上脚本。如果你还没有安装它们,可以通过pip命令如`pip install matplotlib scikit-learn`来进行安装。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值