You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
992 B
Python
38 lines
992 B
Python
"""
|
|
Histogram: a diagram consisting of rectangles whose area is proportional to the frequency
|
|
of a variable and whose width is equal to the class interval.
|
|
|
|
"""
|
|
|
|
from collections import Counter
|
|
from matplotlib import pyplot as plt
|
|
|
|
grades = [83, 95, 91, 87, 70, 0, 85, 82, 100, 67, 73, 77, 0]
|
|
|
|
|
|
def decile(grade: int) -> int:
|
|
"""Returns the decile the grade falls into.
|
|
|
|
Floor division must be used.
|
|
"""
|
|
|
|
return grade // 10 * 10
|
|
|
|
|
|
histogram = Counter(decile(grade) for grade in grades)
|
|
|
|
# Note We do not need to use the alignment tricks to center our bars
|
|
# That was a hold over from the previous Matplob lib API
|
|
plt.bar(x=histogram.keys(), height=histogram.values(), width=8)
|
|
|
|
# Used to set the axis scale x-min, x-max, y-min, y-max
|
|
# We want to fully show the x axis
|
|
# You usually always want your y to start at 0
|
|
plt.axis([-5, 105, 0, 5])
|
|
|
|
plt.xticks(range(0, 110, 10))
|
|
plt.xlabel("Decile")
|
|
plt.ylabel("# of Students")
|
|
plt.title("Distribution of Exam 1 Grades")
|
|
plt.show()
|