For this final checkpoint, I finished the draw_axes(data) and implemented ticks so that plot has clear coordinate reference. The draw_points() function was also finsihed with the use of the no_delay() function which allowed the function to display the points, and done() was used to make the scatter plot visible.

At first, this program was pretty tricky, but working through it step by step helped me understand it.
The top-down plan from Checkpoint 1 made it easier to see how drawing the axes, ticks, and points all fit together. It was difficult to understand
the different parts of the complex program but the top-down plan and outside resources helped me achieve my goal. By the end,
I understood how the pieces worked as a whole, and it gave me ideas for other programs like making line graphs or bar charts in the same way.
This commit is contained in:
angelotr
2025-10-07 01:11:38 -04:00
parent 3c65e2e8a7
commit 6830422dcc

View File

@@ -26,21 +26,61 @@ from transform import (
get_x_values,
get_y_values,
)
import random
def draw_scatterplot(data, size=5, color="black"):
"Draws a scatter plot, showing the data"
# this 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."
#this draws the scatter plot's axes
# X-Axis
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:
# this scales tick position to screen coordinates
screen_x = scale(tick, xmin, xmax, 0, constants.PLOT_WIDTH)
draw_x_tick(screen_x, tick)
# Y-Axis
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:
# this scales tick position to screen coordinates
screen_y = scale(tick, ymin, ymax, 0, constants.PLOT_HEIGHT)
draw_y_tick(screen_y, tick)
def draw_points(data, color, size):
"Draws the scatter plot's points."
#this 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 x, y in data:
screen_x = scale(x, xmin, xmax, 0, constants.PLOT_WIDTH)
screen_y = scale(y, ymin, ymax, 0, constants.PLOT_HEIGHT)
draw_point(screen_x, screen_y, color, size)
# MAIN PROGRAM (runs the plot)
with no_delay():
data = generate_data(50, 10, 500, 5, 400, 1000)
# Generate random test data
data = [(random.randint(10, 500), random.randint(5, 400)) for _ in range(50)]
draw_scatterplot(data, size=5, color="blue")
hideturtle()
done()