如何用Python turtle库绘制线性函数y=kx+d的图像
用Python turtle库绘制线性函数图像实现方案
核心需求拆解
你需要实现两个核心模块:
- 独立的
axes函数:用于绘制带刻度的平面直角坐标系 - 线性函数绘制逻辑:读取参数
k(斜率)和d(截距),在x∈[-10, 10]区间内绘制y=kx+d的图像
完整实现代码(draw_linfunc.py)
import turtle def axes(scale=30): """绘制平面直角坐标系,scale为每个单位对应的像素大小""" axis_pen = turtle.Turtle() axis_pen.speed(0) axis_pen.hideturtle() # 绘制x轴 axis_pen.penup() axis_pen.goto(-11 * scale, 0) axis_pen.pendown() axis_pen.goto(11 * scale, 0) # x轴箭头 axis_pen.goto(10.5 * scale, 0.5 * scale) axis_pen.goto(11 * scale, 0) axis_pen.goto(10.5 * scale, -0.5 * scale) # 绘制y轴 axis_pen.penup() axis_pen.goto(0, -11 * scale) axis_pen.pendown() axis_pen.goto(0, 11 * scale) # y轴箭头 axis_pen.goto(0.5 * scale, 10.5 * scale) axis_pen.goto(0, 11 * scale) axis_pen.goto(-0.5 * scale, 10.5 * scale) # 绘制坐标轴刻度 for i in range(-10, 11): if i == 0: continue # x轴刻度 axis_pen.penup() axis_pen.goto(i * scale, -0.3 * scale) axis_pen.pendown() axis_pen.write(str(i), align='center', font=('Arial', 10, 'normal')) # y轴刻度 axis_pen.penup() axis_pen.goto(-0.7 * scale, i * scale - 6) axis_pen.pendown() axis_pen.write(str(i), align='center', font=('Arial', 10, 'normal')) if __name__ == "__main__": # 坐标缩放比例,调整可改变图像整体大小 SCALE = 30 # 绘制坐标轴 axes(SCALE) # 读取线性函数参数 k = float(input("请输入线性函数斜率k:\n>")) d = float(input("请输入线性函数截距d:\n>")) # 初始化函数绘图笔 func_pen = turtle.Turtle() func_pen.color('red') func_pen.pensize(2) func_pen.speed(2) # 移动到x=-10的起始点 func_pen.penup() start_x = -10 start_y = k * start_x + d func_pen.goto(start_x * SCALE, start_y * SCALE) func_pen.pendown() # 遍历x区间绘制函数线,步长0.1保证线条平滑 x = start_x while x <= 10: y = k * x + d func_pen.goto(x * SCALE, y * SCALE) x += 0.1 func_pen.hideturtle() # 保持绘图窗口不自动关闭 turtle.done()
逻辑说明
你已有的线性函数计算逻辑不需要做大改动,仅需要做两点适配:
- 加入坐标缩放:直接用-10到10的数值作为turtle坐标会导致图像过小,乘以固定缩放系数
SCALE后适配屏幕显示 - 替换输出逻辑:把原来的
print(f)替换为turtle的goto()方法,移动绘图笔连线即可完成图像绘制
运行方式
直接运行draw_linfunc.py,按照终端提示输入k和d的数值,会自动弹出turtle窗口显示坐标轴和对应的线性函数图像。
内容的提问来源于stack exchange,提问作者user16458161
相关产品推荐
相关产品推荐

