Как построить линейный график с Python Turtle? - PullRequest
0 голосов
/ 18 октября 2019

возможно, этот вопрос задавался раньше, но у меня он не работает. Есть ли способ построить линейный график с использованием Python Turtle?

Я понятия не имею, с чего начать, кроме

from turtle import Turtle

Спасибо за любую помощь.

Ответы [ 2 ]

1 голос
/ 24 октября 2019

«Весьма вероятно», это можно сделать еще проще (например, без переменных x2 и y2, но я не уверен)

Если наша цель - построить простоеФункция линии с использованием черепахи, мы можем пойти проще:

from turtle import Turtle, Screen
from math import pi, sin

def draw_wave(frequency=1):
    angle = 0

    while angle < 2 * pi:
        turtle.goto(angle, sin(angle * frequency))
        angle += 0.05

screen = Screen()
screen.setworldcoordinates(0, -1.25, 2 * pi, 1.25)

turtle = Turtle()

draw_wave(2)

turtle.hideturtle()
screen.exitonclick()

И затем приукрашивать (оси и т. д.), как вам требуется.

0 голосов
/ 23 октября 2019

Я не уверен, что понимаю, что вы подразумеваете под "линейным графиком", https://en.wikipedia.org/wiki/Line_graph или https://en.wikipedia.org/wiki/Line_chart? Во втором случае это можно сделать, например, для функции синуса, с помощьюследующий упрощенный код.

import turtle as tr
import math as m

x0, y0 = -300, 275  # The point near the upper left corner of the Turtle screen - virtual origin of coordinates
Y0 = -y0 + 100  # The reference vertical coordinate for the second function
A0 = 100  # The amplitude of sinus function
f0 = 80   # 1/frequency (reverse frequency)

def draw1():
   x1 = 0
   y1 = A0 - A0 * m.sin(x1/f0)
   tr.goto(x0 + x1, y0 - y1)
   tr.down()
   tr.dot(size = 1)
   for x2 in range(abs(x0)*2):
      y2 = A0 - A0 * m.sin(x1/f0)
      tr.goto(x0 + x2, y0 - y2)
      tr.dot(size = 1)
      x1, y1 = x2, y2

def draw2(f0):
   x1 = 0
   y1 = Y0 + A0 * m.sin(x1/f0)
   tr.goto(x0 + x1, y1)
   tr.down()
   tr.dot(size = 1)
   for x2 in range(abs(x0)*2):
      y2 = Y0 + A0 * m.sin(x1/f0)
      tr.goto(x0 + x2, y2)
      tr.dot(size = 1)
      x1, y1 = x2, y2

tr.speed('fastest')
tr.up()
tr.goto(x0, y0)
tr.hideturtle()
tr.color('red')
draw1()  # The pivot point - the virtual origin of coordinates (x0 and y0)

tr.up()
tr.goto(x0,y0)
tr.color('blue')
draw2(f0/2)  # The pivot point - x0 and Y0
input()      # waiting for the <Enter> press in the console window

«Весьма вероятно», это можно сделать еще проще (например, без переменных x2 и y2, но я не уверен) - я выбрал этот методс рисунка на холсте Tkinter. И этот метод, вероятно, подходит для первого случая (с некоторой модификацией, конечно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...