Files
lab_scatter/scatterplot.py
caglazir 8da8754269 I made some changes/fixes to draw a scatter plot.
I enjoyed the thought processes that were happening in my mind,
altough it HURT. I think I did a little too much with recalling some
of the functions we defined in our transform.py file for the
scatterplot.py file. I appreciated the step-by-step breakdown on the
website to guide me though what would be  included in each chunk of
the code. Still, I ran into the issue of how to actually make those
steps happen. I think it had more to do with my understanding of the
individual functins like clamp and ratio because I went back and forth
many times trying to figure out how to actually execute them. I
preffered the kind of thinking we did for Checkpoint #2. It made a lot
more sense to me although I still struggled with what things actually
meant.
2025-10-15 21:02:19 -04:00

84 lines
2.1 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):
draw_x_axis()
x_values = get_x_values(data)
xmin, xmax = bounds(x_values)
x_ticks = get_tick_values(xmin, xmax)
for tick in x_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)
y_ticks = get_tick_values(ymin, ymax)
for tick in y_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):
x_values = get_x_values(data)
y_values= get_y_values(data)
xmin, xmax = bounds(x_values)
ymin, ymax = bounds(y_values)
for x,y in data:
x = clamp(x, xmin, xmax)
ratio(x, xmin, xmax)
scaled_x=scale(x, xmin, xmax, 0, constants.PLOT_WIDTH)
y = clamp(y, ymin, ymax)
ratio(y, ymin, ymax)
scaled_y=scale(y, ymin, ymax, 0, constants.PLOT_HEIGHT)
#At this point I am deeply confused with what domain min and max are supposed to be.
# I am also sort of confused of how much of the individual recalling is needed for the functions such as ratio, clamp, etc.
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()