# scatterplot.py # ------------ # By MWC Contributors # Uses lots of helper functions in other modules to draw a scatter plot. from turtle import * from superturtlescat import * 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_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(xmin, xmax) for tick in ticks: screen_y_position = scale(tick, ymin, ymax, 0, constants.PLOT_WIDTH) draw_y_tick(screen_y_position, tick) def draw_points(data, color, size): "Draws the scatter plot's points." #For each point in the data: #Get the x and y value from the point. #Find the x-bounds and the y-bounds of the data. You'll need these for scaling. #Find the scaled x-position for the point. #Find the scaled y-position for the point. #Use draw_point(scaled_x, scaled_y, color, size) to draw the point. for something in somethings: draw_point(scaled_x, scaled_y, color, size) x_values = get_x_values(data) xmin, xmax = bounds(x_values) y_values = get_y_values(data) ymin, ymax = bounds(y_values) for x_value in x_values: scaled_x = scale(x_value, xmin, xmax, ymin, ymax) scx = [] scx.append(scaled_x) #return scx #return stops shit, gotta fix it for y_value in y_values: scaled_y = scale(y_value, xmin, xmax, ymin, ymax) scy = [] scy.append(scaled_y) for cx, cy in scx, scy: with no_delay(): data = generate_data(50, 10, 500, 5, 400, 1000) # data = [[0,0],[2,4],[4,8],[8,16],[16,32]] draw_scatterplot(data, size=5, color="blue") hideturtle() done()