generated from mwc/lab_scatter
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:
parent
f6cfe7235a
commit
31de3c0502
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue