我想制作一个功能,其中包含一个成绩列表,并将每个成绩分为五个类别:
[0,60],[60,70],[70,80],[80,90],[90,100]
然后使用matplotlib制作饼图和直方图。
我不确定从哪里开始。
答案 0 :(得分:1)
始终从gallery开始。在那里,您会找到example pie chart和example histogram。
答案 1 :(得分:0)
首先定义一个函数。 假设您有名为x的成绩列表:
x = [5, 12, 29, 30, 60, 70, 80, 90, 36, 42, 47, 50, 55, 59, 63, 68, 75, 80, 88, 99, 100]
你将定义一个函数f(x)
def f(object):
nullsix = []
sixseven = []
seveneight = []
eightnine = []
nineten = []
for value in object:
if value >= 0 and value < 60:
nullsix.append(value)
elif value < 70:
sixseven.append(value)
elif value < 80:
seveneight.append(value)
elif value < 90:
eightnine.append(value)
else:
nineten.append(value)
print(nullsix)
print(sixseven)
print(seveneight)
print(eightnine)
print(nineten)
当你调用函数f(x)
时,结果将是:
[5, 12, 29, 30, 36, 42, 47, 50, 55, 59]
[60, 63, 68]
[70, 75]
[80, 80, 88]
[90, 99, 100]
要使用matplotlib函数,您应该在函数中导入它并定义标签,大小,以及是否要偏移切片。在这里,试试这个:
def f(object):
import matplotlib.pyplot as plt
nullsix = []
sixseven = []
seveneight = []
eightnine = []
nineten = []
for value in object:
if value >= 0 and value < 60:
nullsix.append(value)
elif value < 70:
sixseven.append(value)
elif value < 80:
seveneight.append(value)
elif value < 90:
eightnine.append(value)
else:
nineten.append(value)
a = int(len(nullsix))
b = int(len(sixseven))
c = int(len(seveneight))
d = int(len(eightnine))
e = int(len(nineten))
labels = '90-100', '80-90', '70-80', '60-70', '0-60'
sizes = [e, b, c, d, a]
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral', 'orange']
explode = (0.1, 0, 0, 0, 0)
plt.pie(sizes, explode=explode, labels=labels, colors=colors,
autopct='%1.1f%%', shadow=True, startangle=90)
plt.axis('equal')
plt.show()
告诉我它是否有效,我没有安装matplotlib,只是按照演示。