generated from mwc/lab_scatter
	For this final checkpoint, I finished the draw_axes(data) and implemented ticks so that plot has clear coordinate reference. The draw_points() function was also finsihed with the use of the no_delay() function which allowed the function to display the points, and done() was used to make the scatter plot visible.
At first, this program was pretty tricky, but working through it step by step helped me understand it. The top-down plan from Checkpoint 1 made it easier to see how drawing the axes, ticks, and points all fit together. It was difficult to understand the different parts of the complex program but the top-down plan and outside resources helped me achieve my goal. By the end, I understood how the pieces worked as a whole, and it gave me ideas for other programs like making line graphs or bar charts in the same way.
This commit is contained in:
		@@ -26,21 +26,61 @@ from transform import (
 | 
			
		||||
    get_x_values,
 | 
			
		||||
    get_y_values,
 | 
			
		||||
)
 | 
			
		||||
import random
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def draw_scatterplot(data, size=5, color="black"):
 | 
			
		||||
    "Draws a scatter plot, showing the data"
 | 
			
		||||
    # this 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."
 | 
			
		||||
    #this draws the scatter plot's axes
 | 
			
		||||
 | 
			
		||||
    # X-Axis
 | 
			
		||||
    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:
 | 
			
		||||
        # this scales tick position to screen coordinates
 | 
			
		||||
        screen_x = scale(tick, xmin, xmax, 0, constants.PLOT_WIDTH)
 | 
			
		||||
        draw_x_tick(screen_x, tick)
 | 
			
		||||
 | 
			
		||||
    # Y-Axis 
 | 
			
		||||
    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:
 | 
			
		||||
        # this scales tick position to screen coordinates
 | 
			
		||||
        screen_y = scale(tick, ymin, ymax, 0, constants.PLOT_HEIGHT)
 | 
			
		||||
        draw_y_tick(screen_y, tick)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def draw_points(data, color, size):
 | 
			
		||||
    "Draws the scatter plot's points."
 | 
			
		||||
    #this 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 x, y in data:
 | 
			
		||||
        screen_x = scale(x, xmin, xmax, 0, constants.PLOT_WIDTH)
 | 
			
		||||
        screen_y = scale(y, ymin, ymax, 0, constants.PLOT_HEIGHT)
 | 
			
		||||
        draw_point(screen_x, screen_y, color, size)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# MAIN PROGRAM (runs the plot) 
 | 
			
		||||
with no_delay():
 | 
			
		||||
    data = generate_data(50, 10, 500, 5, 400, 1000)
 | 
			
		||||
    # Generate random test data
 | 
			
		||||
    data = [(random.randint(10, 500), random.randint(5, 400)) for _ in range(50)]
 | 
			
		||||
    draw_scatterplot(data, size=5, color="blue")
 | 
			
		||||
    hideturtle()
 | 
			
		||||
 | 
			
		||||
done()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user