generated from mwc/lab_scatter
	Finished scatter plot implementation
I think it went well, and the goal was decomposed into understandable chunks. The programmer in me couldn't help but be annoyed with the redundancies in this implementation; we can avoid redoing the same calculation, which is how I designed my outline. I know that for most students this is probably something easily overlooked, but if I were to teach this lab, I would actually have students use their plan to implement the plot. You could guide them in the right direction by saying "break it down into at least n functions" and maybe even go over this outline as an example but still encourage students to write follow their own steps. Making a pie chart would also be a fun project for the turtle library. I think it would also be conceptually easier for younger students because you're working with categorical data; make a list the student's favorite ice-cream flavors and use that data to make a pie chart
This commit is contained in:
		@@ -35,9 +35,28 @@ def draw_scatterplot(data, size=5, color="black"):
 | 
			
		||||
 | 
			
		||||
def draw_axes(data):
 | 
			
		||||
    "Draws the scatter plot's axes."
 | 
			
		||||
    draw_x_axis()
 | 
			
		||||
    x_low, x_high = bounds(get_x_values(data))
 | 
			
		||||
    x_ticks = get_tick_values(x_low, x_high)
 | 
			
		||||
    for tick in x_ticks:
 | 
			
		||||
        tick_pos = scale(tick, x_low, x_high, 0, constants.PLOT_WIDTH)
 | 
			
		||||
        draw_x_tick(tick_pos, tick)
 | 
			
		||||
    draw_y_axis()
 | 
			
		||||
    y_low, y_high = bounds(get_y_values(data))
 | 
			
		||||
    y_ticks = get_tick_values(y_low, y_high)
 | 
			
		||||
    for tick in y_ticks:
 | 
			
		||||
        tick_pos = scale(tick, y_low, y_high, 0, constants.PLOT_HEIGHT)
 | 
			
		||||
        draw_y_tick(tick_pos, tick)
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
def draw_points(data, color, size):
 | 
			
		||||
    "Draws the scatter plot's points."
 | 
			
		||||
    x_min, x_max = bounds(get_x_values(data))
 | 
			
		||||
    y_min, y_max = bounds(get_y_values(data))
 | 
			
		||||
    for x, y in data:
 | 
			
		||||
        scaled_x = scale(x, x_min, x_max, 0, constants.PLOT_WIDTH)
 | 
			
		||||
        scaled_y = scale(y, y_min, y_max, 0, constants.PLOT_HEIGHT)
 | 
			
		||||
        draw_point(scaled_x, scaled_y, color, size)
 | 
			
		||||
 | 
			
		||||
with no_delay():
 | 
			
		||||
    data = generate_data(50, 10, 500, 5, 400, 1000)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user