我正在尝试创建一个python脚本,允许我使用turtle来绘制像y = 0.5x + 3这样的函数。如何做到这一点?我目前的做法是:
import turtle
ivy = turtle.Turtle()
def plotter(x):
y = (0.5 * x) + 3
ivy.goto(0, y)
plotter(x=20)
答案 0 :(得分:1)
您可以绘制一些轴,然后在一系列x坐标上绘制y:
from turtle import Turtle, Screen
WIDTH, HEIGHT = 20, 15 # coordinate system size
def plotter(turtle, x_range):
turtle.penup()
for x in x_range:
y = x / 2 + 3
ivy.goto(x, y)
turtle.pendown()
def axis(turtle, distance, tick):
position = turtle.position()
turtle.pendown()
for _ in range(0, distance // 2, tick):
turtle.forward(tick)
turtle.dot()
turtle.setposition(position)
for _ in range(0, distance // 2, tick):
turtle.backward(tick)
turtle.dot()
screen = Screen()
screen.setworldcoordinates(-WIDTH/2, -HEIGHT/2, WIDTH//2, HEIGHT/2)
ivy = Turtle(visible=False)
ivy.speed('fastest')
ivy.penup()
axis(ivy, WIDTH, 1)
ivy.penup()
ivy.home()
ivy.setheading(90)
axis(ivy, HEIGHT, 1)
plotter(ivy, range(-WIDTH//2, WIDTH//2))
screen.exitonclick()
或者,您可以切换到matplotlib(和numpy)并忘记turtle:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x / 2 + 3
t = np.arange(-10, 10, 0.5)
plt.plot(t, f(t))
plt.show()
根据您的内心定制。
答案 1 :(得分:0)
from turtle import *
ht(); speed(0)
color('green'); width(1)
for i in range(4): # axes
fd(80); bk(80); rt(90)
color('red'); width(2)
pu(); goto(-50, -70); pd()
for x in range(-50, 30):
y = 2*x + 30
goto(x, y)