1. 使用饼图显示前100名大学中各种类型学校的占比
import openpyxl
wb = openpyxl.load_workbook("charts/2020年中国大学排名.xlsx")
sheet1 = wb["Sheet1"]
mr = sheet1.max_row
data1 ={}
for row in range(2,mr+1):
leixing = sheet1.cell(row, 4).value
if leixing not in data1:
data1[leixing] = 1
else:
data1[leixing]+= 1
pie_data = []
for key in data1:
pie_data.append((key,data1[key]))
#第二步制作饼图
from pyecharts.charts import Pie
from pyecharts import options
pie = Pie()
pie.add(
"各种类型学校占比",
pie_data,
)
pie.set_series_opts(
label_opts=options.LabelOpts(
formatter="{b}({d})%"
)
)
pie.set_global_opts(
legend_opts=options.LegendOpts(
is_show=False
),
title_opts=options.TitleOpts(
title="前100名大学中各种类型学校的占比",
pos_left="300"
)
)
pie.render("charts/作业1饼图.html")
2. 使用柱状图显示不同类型学校的平均总分
#第一步,拿到数据
data2 = {}
lie = []
for row in range(2,mr+1):
lie.append(leixing)
leixing = sheet1.cell(row, 4).value
zongfen = sheet1.cell(row, 5).value
if leixing not in data2:
data2[leixing] = zongfen
else:
data2[leixing]+= zongfen
for x in data2:
data2[x] /= lie.count(x)
print(data2)
#结果{'综合': 364.8333333333333, '理工': 295.54761904761904, '师范': 281.2, '农业': 282.4, '林业': 242.0}
#第二步,制图
from pyecharts.charts import Bar
from pyecharts import options
bar = Bar()
x1 = []
y1 = []
for x in data2:
x1.append(x)
y1.append(data2[x])
print(x1,y1)
bar.add_xaxis(x1)
bar.add_yaxis("平均分数",y1)
bar.set_global_opts(
#设置标题
title_opts=options.TitleOpts(
title="各类学校平均分", #主标题
text_align="center", #主标题和副标题的对齐方式:left,right,center
pos_left="400", #设置标题位置:pos_left,post_right,pos_top,pos_bottom
),
#设置图例
legend_opts=options.LegendOpts(
is_show=True, #是否显示
pos_right=90, #设置图例位置
pos_top=25,
item_width=15, #设置图标宽度
),
#设置X轴
xaxis_opts=options.AxisOpts(
name="学校类型"
),
#设置Y轴
yaxis_opts=options.AxisOpts(
name="平均分数"
),
)
bar.render("charts/作业2柱状图.html")