generated from mwc/lab_scatter
	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.
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			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()
 | 
						|
 | 
						|
 |