generated from mwc/lab_scatter
	I finished transform.py
I had to think of how I could use my functions from before to add to the functions after it to make progress, completely different to what I was thinking before this lab.
This commit is contained in:
		@@ -35,12 +35,36 @@ def draw_scatterplot(data, size=5, color="black"):
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def draw_axes(data):
 | 
					def draw_axes(data):
 | 
				
			||||||
    "Draws the scatter plot's axes."
 | 
					    "Draws the scatter plot's axes."
 | 
				
			||||||
 | 
					    draw_x_axis()
 | 
				
			||||||
 | 
					    draw_y_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)
 | 
				
			||||||
 | 
					    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):
 | 
					def draw_points(data, color, size):
 | 
				
			||||||
    "Draws the scatter plot's points."
 | 
					    "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)
 | 
				
			||||||
 | 
					    tick = get_tick_values(xmin, xmax)
 | 
				
			||||||
 | 
					    tick = get_tick_values(ymin, ymax)
 | 
				
			||||||
 | 
					    screen_x_position = scale(tick, xmin, xmax, 0, constants.PLOT_WIDTH)
 | 
				
			||||||
 | 
					    screen_y_position = scale(tick, ymin, ymax, 0, constants.PLOT_HEIGHT)
 | 
				
			||||||
 | 
					    draw_point(x, y, color, size)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
with no_delay():
 | 
					with no_delay():
 | 
				
			||||||
    data = generate_data(50, 10, 500, 5, 400, 1000)
 | 
					    data = generate_data(50, 10, 500, 5, 400, 1000)
 | 
				
			||||||
    draw_scatterplot(data, size=5, color="blue")
 | 
					    draw_scatterplot(data, size=5, color="blue")
 | 
				
			||||||
    hideturtle()
 | 
					    hideturtle()
 | 
				
			||||||
done()
 | 
					done()
 | 
				
			||||||
 | 
					 
 | 
				
			||||||
							
								
								
									
										47
									
								
								transform.py
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								transform.py
									
									
									
									
									
								
							@@ -6,38 +6,69 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
def maximum(data):
 | 
					def maximum(data):
 | 
				
			||||||
    "Returns the largest number in data"
 | 
					    "Returns the largest number in data"
 | 
				
			||||||
    raise NotImplementedError
 | 
					    highest = None
 | 
				
			||||||
 | 
					    for number in data:
 | 
				
			||||||
 | 
					        if highest is None:
 | 
				
			||||||
 | 
					            highest = number
 | 
				
			||||||
 | 
					        if number > highest:
 | 
				
			||||||
 | 
					            highest = number
 | 
				
			||||||
 | 
					    return highest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def minimum(data):
 | 
					def minimum(data):
 | 
				
			||||||
    "Returns the smallest number in data"
 | 
					    "Returns the smallest number in data"
 | 
				
			||||||
    raise NotImplementedError
 | 
					    lowest = None
 | 
				
			||||||
 | 
					    for number in data:
 | 
				
			||||||
 | 
					        if lowest is None:
 | 
				
			||||||
 | 
					            lowest = number
 | 
				
			||||||
 | 
					        if number < lowest:
 | 
				
			||||||
 | 
					            lowest = number
 | 
				
			||||||
 | 
					    return lowest
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def bounds(data):
 | 
					def bounds(data):
 | 
				
			||||||
    "Returns a list of the smallest and largest numbers in data"
 | 
					    "Returns a list of the smallest and largest numbers in data"
 | 
				
			||||||
    raise NotImplementedError
 | 
					    highest = maximum(data)
 | 
				
			||||||
 | 
					    lowest = minimum(data)
 | 
				
			||||||
 | 
					    return [lowest, highest]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def clamp(value, low, high):
 | 
					def clamp(value, low, high):
 | 
				
			||||||
    """Clamps a value to a range from low to high. 
 | 
					    """Clamps a value to a range from low to high. 
 | 
				
			||||||
    Returns value if it is between low and high.
 | 
					    Returns value if it is between low and high.
 | 
				
			||||||
    If value is lower than low, returns low. If value is higher than high, returns high.
 | 
					    If value is lower than low, returns low. If value is higher than high, returns high.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    raise NotImplementedError
 | 
					    if value < low:
 | 
				
			||||||
 | 
					        return low
 | 
				
			||||||
 | 
					    elif value > high:
 | 
				
			||||||
 | 
					        return high
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        return value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def ratio(value, start, end):
 | 
					def ratio(value, start, end):
 | 
				
			||||||
    """Returns a number from 0.0 to 1.0, representing how far along value is from start to end.
 | 
					    """Returns a number from 0.0 to 1.0, representing how far along value is from start to end.
 | 
				
			||||||
    The return value is clamped to [0, 1], so even if value is lower than start, the return 
 | 
					    The return value is clamped to [0, 1], so even if value is lower than start, the return 
 | 
				
			||||||
    value will not be lower than 0.0.
 | 
					    value will not be lower than 0.0.
 | 
				
			||||||
    """
 | 
					    """
 | 
				
			||||||
    raise NotImplementedError
 | 
					    number = (value-start)/(end-start)
 | 
				
			||||||
 | 
					    number = clamp(number, 0.0, 1.0)
 | 
				
			||||||
 | 
					    return number
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def scale(value, domain_min, domain_max, range_min, range_max):
 | 
					def scale(value, domain_min, domain_max, range_min, range_max):
 | 
				
			||||||
    "Given a value within a domain, returns the scaled equivalent within range."
 | 
					    "Given a value within a domain, returns the scaled equivalent within range."
 | 
				
			||||||
    raise NotImplementedError
 | 
					    scale = range_min + ((ratio(value, domain_min, domain_max))*(range_max - range_min))
 | 
				
			||||||
 | 
					   
 | 
				
			||||||
 | 
					    return scale
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_x_values(points):
 | 
					def get_x_values(points):
 | 
				
			||||||
    "Returns the first value for each point in points."
 | 
					    "Returns the first value for each point in points."
 | 
				
			||||||
    raise NotImplementedError
 | 
					    x_list = []
 | 
				
			||||||
 | 
					    for point in points:
 | 
				
			||||||
 | 
					        x = point[0]
 | 
				
			||||||
 | 
					        x_list.append(x)
 | 
				
			||||||
 | 
					    return x_list
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_y_values(points):
 | 
					def get_y_values(points):
 | 
				
			||||||
    "Returns the second value for each point in points."
 | 
					    "Returns the second value for each point in points."
 | 
				
			||||||
    raise NotImplementedError
 | 
					    y_list = []
 | 
				
			||||||
 | 
					    for point in points:
 | 
				
			||||||
 | 
					        y = point[1]
 | 
				
			||||||
 | 
					        y_list.append(y)
 | 
				
			||||||
 | 
					    return y_list
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user