Files
lab_scatter/scatterplot.py
ilmabura 8310dd9304 checkpooint 3: completed scatterplot
I think i am used to bottom-up problem solving. I like doing problems by first utilizing the knowledge I
already have and expanding it. Top-down thinking, like we did in checkpoint 1 may sometimes make it difficult to
proceed once you get stuck in a step. For bottom up, you can move onto a different part which you already know.
2025-10-06 22:49:27 -04:00

73 lines
1.8 KiB
Python

# scatterplot.py
# ------------
# By MWC Contributors
# Uses lots of helper functions in other modules to draw a scatter plot.
from turtle import *
from superturtle.movement import no_delay
import constants
from generate_data import generate_data
from ticks import get_tick_values
from plotting import (
prepare_screen,
draw_x_axis,
draw_y_axis,
draw_x_tick,
draw_y_tick,
draw_point,
)
from transform import (
maximum,
minimum,
bounds,
clamp,
ratio,
scale,
get_x_values,
get_y_values,
)
def draw_scatterplot(data, size=5, color="black"):
"Draws a scatter plot, showing the data"
prepare_screen()
draw_axes(data)
draw_points(data, color, size)
def draw_axes(data):
"Draws the scatter plot's axes."
draw_x_axis()
x_val = get_x_values(data)
xmin, xmax = bounds(x_val)
ticks = get_tick_values(xmin, xmax)
for tick in ticks:
screen_x_pos = scale(tick, xmin, xmax, 0, constants.PLOT_WIDTH)
draw_x_tick(screen_x_pos, tick)
draw_y_axis()
y_val= get_y_values(data)
ymin, ymax = bounds(y_val)
ticks= get_tick_values(ymin, ymax)
for tick in ticks:
screen_y_pos = scale(tick, ymin, ymax, 0, constants.PLOT_WIDTH)
draw_y_tick(screen_y_pos, tick)
def draw_points(data, color, size):
"Draws the scatter plot's points."
x_val = get_x_values(data)
y_val= get_y_values (data)
xmin, xmax = bounds(x_val)
ymin, ymax = bounds(y_val)
for point in data:
scaled_x = scale(point[0], xmin, xmax, 0, constants.PLOT_WIDTH)
scaled_y = scale(point[1], ymin, ymax, 0, constants.PLOT_WIDTH)
draw_point(scaled_x, scaled_y, color, size)
with no_delay():
data = generate_data(50, 10, 500, 5, 400, 1000)
draw_scatterplot(data, size=5, color="blue")
hideturtle()
done()