Python的基本绘图<二>

学习目标:

在前面一节当中,我们已经了解了turtle库的基本语法。现在就进行一些实战,进一步掌握turtle库的相关语法内容。

学习内容:

示例1 绘制正方形(对角线),绘制要求如下:
a. 画出一个由两个直角三角形组成的正方形,边长为180像素;
b.左上角三角形填充为黄色,右下角三角形填充为红色;
c.设置画笔的速度为1,线条为黑色;
d.画图结束后,隐藏并停止画笔;

相关代码演示:

import turtle as t
t.speed(1) #设置运行的速度为1
t.setup(800,600,0, 0)

t.fillcolor("red") #设置颜色
t.begin_fill()  #开始填充颜色
t.forward(180)
t.left(90)
t.forward(180)
t.goto(0,0)
t.end_fill() #结束填充颜色

t.fillcolor("yellow")
t.begin_fill()
t.forward(180)
t.right(90)
t.forward(180)
t.goto(0, 0)
t.end_fill()

t.hideturtle() #隐藏画笔
t.done()  #手动退出,不然就会自动退出,不容易观察到效果

运行结果展示:

示例2 在Turtle画布上画出四叶风车,半径为100,要求:
a.风轮由4个扇叶组成,每个扇叶的大小相等,相邻两个扇叶间距相等;
b.四个扇叶的颜色分别为(红,黄,蓝,绿)。

相关代码演示:

import turtle as t
t.speed(5)

t.fillcolor("red") #设置颜色
t.begin_fill()
t.seth(0)
t.forward(100)
t.right(90)
t.circle(-100, 45)
t.goto(0,0)
t.end_fill()

t.fillcolor("green") #设置颜色
t.begin_fill()
t.seth(270)
t.forward(100)
t.right(90)
t.circle(-100, 45)
t.goto(0,0)
t.end_fill()

t.fillcolor("blue") #设置颜色
t.begin_fill()
t.seth(180)
t.forward(100)
t.right(90)
t.circle(-100, 45)
t.goto(0,0)
t.end_fill()

t.fillcolor("yellow") #设置颜色
t.begin_fill()
t.seth(90)
t.forward(100)
t.right(90)
t.circle(-100, 45)
t.goto(0,0)
t.end_fill()

t.hideturtle()
t.done()

运行结果展示:
在这里插入图片描述

示例3 绘制菱形,绘制要求:
a. 背景为白色,中间圆为红色轮廓线,不填充;
b. 菱形的长对角线延长线经过圆心;
c.菱形为黑色轮廓线,黄色填充,其中锐角为60度;
d.绘图过程中隐藏画笔,能清楚看见图形绘制过程。

代码演示:

import turtle as t
t.speed(10)

t.penup() #抬起画笔,不进行绘图
t.forward(120) #画笔向前移动120像素
t.pendown() #画笔落下
t.pencolor("red") #画笔的颜色为红色
t.pensize(2) #画笔的粗度为2
t.left(90)
t.circle(120)
t.penup()
t.goto(0,0)

for i in range(12):
    t.pencolor("black")
    t.fillcolor("yellow")
    t.begin_fill()
    t.penup()
    t.seth(i*30)
    t.forward(120)
    t.pendown()
    t.right(30)
    t.forward(80)
    t.left(60)
    t.forward(80)
    t.left(120)
    t.forward(80)
    t.left(60)
    t.forward(80)
    t.end_fill()
    t.penup()
    t.goto(0, 0)

t.hideturtle()
t.done()

运行结果展示:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个图像处理的问题,需要使用Python编程语言和一些图像处理来实现。以下是代码实现: ```python import numpy as np import matplotlib.pyplot as plt import imageio # 读入一幅图像 img = imageio.imread('lena.png') plt.imshow(img, cmap='gray') plt.title('Original Image') plt.axis('off') plt.show() # 计算图中每个灰度级的频数、频率 hist, bins = np.histogram(img.flatten(), 256, [0, 256]) freq = hist / np.sum(hist) # 从频率出发计算该图像的自信息、信息熵 eps = 1e-10 info = -np.log2(freq + eps) entropy = np.sum(-freq * np.log2(freq + eps)) # 可视化显示原图、灰度级频数、自信息和信息熵 plt.figure(figsize=(10, 8)) plt.subplot(2, 2, 1) plt.imshow(img, cmap='gray') plt.title('Original Image') plt.axis('off') plt.subplot(2, 2, 2) plt.bar(bins[:-1], hist, width=1) plt.title('Histogram') plt.xlabel('Intensity') plt.ylabel('Frequency') plt.subplot(2, 2, 3) plt.imshow(info[img], cmap='gray') plt.title('Self Information') plt.axis('off') plt.subplot(2, 2, 4) plt.text(0.5, 0.5, f'Entropy = {entropy:.2f}', ha='center', va='center', fontsize=20) plt.axis('off') plt.show() ``` 解释一下代码: 1. 读入一幅图像使用 `imageio.imread()` 函数,存储在 `img` 变量中。 2. 计算图像中每个灰度级的频数和频率,使用 `numpy.histogram()` 函数。 3. 从频率出发计算该图像的自信息和信息熵,使用 `numpy.log2()` 函数和一些基本运算。 4. 可视化显示原图、灰度级频数、自信息和信息熵,使用 `matplotlib.pyplot` 的函数进行绘图。 注意,这里的图像是灰度图像,如果是彩色图像需要将其转换为灰度图像。同时,如果想要计算多个图像的自信息和信息熵,可以将上述代码封装成一个函数并循环调用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值