Checkpoint #3

Overall I think it went well. The only place I got stuck at this checkpoint
was with scaling the x and the y coordinates of the points. To be
honest, I'm still not 100% sure how that scale function works, even in
the context of the overall program. Perhaps it has to do with the description
which includes both domain and range, but using a different set of inputs
for x values compared to y values. Overall, I think I had a good idea
of the steps that were required in checkpoint 1, however I did not break
it down into pieces as small as this code ended up doing.

An idea for a similar/extension program, would be a program that
adds a line of best fit and calculates/displays the equation and
correlation coefficient of the regression equation.
This commit is contained in:
Thomas Naber 2023-08-03 16:53:43 -04:00
parent f6cfe7235a
commit 31de3c0502
1 changed files with 27 additions and 0 deletions

View File

@ -3,6 +3,7 @@
# By MWC Contributors
# Uses lots of helper functions in other modules to draw a scatter plot.
from sqlite3 import DatabaseError
from turtle import *
from superturtle.movement import no_delay
import constants
@ -35,10 +36,36 @@ def draw_scatterplot(data, size=5, color="black"):
def draw_axes(data):
"Draws the scatter plot's axes."
draw_x_axis()
x_values = get_x_values(data)
xmin, xmax = bounds(x_values)
ticks = get_tick_values(xmin, xmax)
for tick in ticks:
screen_x_position = scale(tick, xmin, xmax, 0, constants.PLOT_WIDTH)
draw_x_tick(screen_x_position, tick)
draw_y_axis()
y_values = get_y_values(data)
ymin, ymax = bounds(y_values)
ticks = get_tick_values(ymin, ymax)
for tick in ticks:
screen_y_position = scale(tick, ymin, ymax, 0, constants.PLOT_HEIGHT)
draw_y_tick(screen_y_position, tick)
def draw_points(data, color, size):
"Draws the scatter plot's points."
x_values = get_x_values(data)
y_values = get_y_values(data)
xmin, xmax = bounds(x_values)
ymin, ymax = bounds(y_values)
for point in data:
x = point[0]
y = point[1]
x_scaled = scale(x, xmin, xmax, 0, constants.PLOT_WIDTH)
y_scaled = scale(y, ymin, ymax, 0, constants.PLOT_HEIGHT)
draw_point(x_scaled, y_scaled, color, size)
with no_delay():
data = generate_data(50, 10, 500, 5, 400, 1000)
draw_scatterplot(data, size=5, color="blue")