From 31de3c0502de51859d606cd6fc54a0d1e58cc352 Mon Sep 17 00:00:00 2001 From: Thomas Naber Date: Thu, 3 Aug 2023 16:53:43 -0400 Subject: [PATCH] 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. --- scatterplot.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/scatterplot.py b/scatterplot.py index 50f66fb..8a10ee5 100644 --- a/scatterplot.py +++ b/scatterplot.py @@ -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")