安装requests包
pip install requests
安装pyecharts包
pip install pyecharts
柱状图:
折线图:
饼图:
import requests
from pyecharts.charts import Bar, Line, Pie
from pyecharts.globals import ThemeType
from pyecharts import options as opts
def data_one():
url = 'https://piaofang.maoyan.com/getBoxList?date=1&isSplit=true&timeStamp=1637233875102&index=242&channelId=40009&sVersion=1&signKey=7f498fbe57c7ea7e8889fdfa2b65e1b8'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (HTML5, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
# 定义两个空列表
name_list = []
movie_list = []
res = requests.get(url=url, headers=headers).json()
# 索引到list里
json_dict = res['boxOffice']['data']['list']
for i in json_dict:
# 在获取到的数据里索引电影名
name = i['movieInfo']['movieName']
# 如果票房的最后一位是亿,那么票房的数字乘10000
if i['sumBoxDesc'][-1] == '亿':
a = float(i['sumBoxDesc'][:-1]) * 10000
# 否则
else:
# 如果票房的最后一位不是亿,那就是万,不变
a = i['sumBoxDesc'][:-1]
# 将电影名、票房添加到上面定义的两个空列表中
name_list.append(name)
movie_list.append(a)
print('data ===> success')
# 向函数传值
see_bar(name_list, movie_list)
see_line(name_list, movie_list)
see_pie(name_list, movie_list)
# 柱状图表
def see_bar(name_list, movie_list):
bar = Bar(init_opts=opts.InitOpts(width='1200px', height='600px', page_title='猫眼电影', theme=ThemeType.VINTAGE))
# X轴数据
bar.add_xaxis(name_list, )
# Y轴数据
bar.add_yaxis('票房', movie_list)
# 全局设置
bar.set_global_opts(
title_opts=opts.TitleOpts(
# 主标题
title='猫眼电影',
# 副标题
subtitle='票房数据',
# 标题位置
pos_left='center',
# 主标题样式
title_textstyle_opts=opts.TextStyleOpts(font_size=30, color='#ee3f4d'),
# 副标题样式
subtitle_textstyle_opts=opts.TextStyleOpts(font_size=20, color='#f0a1a8')),
# x轴设置
xaxis_opts=opts.AxisOpts(name_rotate=0, axislabel_opts={"rotate": 0, "interval": 0, }, ), # 名字太长不显示,倾斜角度
# 图例设置
legend_opts=opts.LegendOpts(pos_left='right', textstyle_opts=opts.TextStyleOpts(font_size=20, color='#de1c31')),
# y轴 单位
yaxis_opts=opts.AxisOpts(name='单位:万元')
)
# 格式化输出
bar.set_series_opts(
label_opts=opts.LabelOpts(formatter='{@[1]}万'))
# 渲染页面
bar.render('bar.html')
print('bar ===> success')
# 折线图表
def see_line(name_list, movie_list):
line = Line(init_opts=opts.InitOpts(width='1200px', height='600px', page_title='猫眼电影', theme=ThemeType.VINTAGE))
# X轴数据
line.add_xaxis(name_list)
# Y轴数据
line.add_yaxis('票房', movie_list)
# 全局设置
line.set_global_opts(
title_opts=opts.TitleOpts(
# 主标题
title='猫眼电影',
# 副标题
subtitle='票房数据',
# 标题位置
pos_left='center',
# 主标题样式
title_textstyle_opts=opts.TextStyleOpts(font_size=30,
color='#ee3f4d'),
# 副标题样式
subtitle_textstyle_opts=opts.TextStyleOpts(font_size=20,
# 颜色
color='#f0a1a8')),
# x轴设置
# x轴文字的角度"rotate": 0
xaxis_opts=opts.AxisOpts(name_rotate=0, axislabel_opts={"rotate": 0, "interval": 0, }, ), # 名字太长不显示,倾斜角度
# 标签设置
# pos_left='left' 标签位置
# textstyle_opts 标签
legend_opts=opts.LegendOpts(pos_left='left', textstyle_opts=opts.TextStyleOpts(font_size=20, color='#de1c31')),
# y轴 单位
yaxis_opts=opts.AxisOpts(name='单位:万元')
)
# 格式化输出
line.set_series_opts(
label_opts=opts.LabelOpts(formatter='{@[1]}万', position='right'))
# 渲染页面
line.render('line.html')
print('line ===> success')
# 饼图
def see_pie(name_list, movie_list):
# 创建一个Pie对象
pie = Pie(init_opts=opts.InitOpts(width='1200px', height='600px', page_title='猫眼电影', theme=ThemeType.VINTAGE))
# 定义一个空的列表
data_list = []
# 循环zip(name_list,movie_list),将票房和电影名合成key,value格式
for i in zip(name_list, movie_list):
# 将key,value格式数据合成在data_list
data_list.append(list(i))
# 传入数据,鼠标停留显示
# series_name = '猫眼票房' 鼠标放在块上的标签文字
pie.add(
data_pair=data_list, series_name='猫眼票房', label_opts=opts.LabelOpts(font_size=12) # 视觉引导线的字体
)
# 全局设置
pie.set_global_opts(
title_opts=opts.TitleOpts(
# 主标题
title='猫眼电影',
# 副标题
subtitle='票房数据',
# 标题位置
pos_left='center',
# 主标题样式
title_textstyle_opts=opts.TextStyleOpts(
font_size=20, color='black'
),
# 副标题样式
subtitle_textstyle_opts=opts.TextStyleOpts(font_size=14, color='black')
),
# 标签设置
# pos_left='right' 标签位置
# orient='vertical' 标签竖排列
legend_opts=opts.LegendOpts(pos_left='right', orient='vertical')
)
pie.render('pie.html')
print('pie ===> success')
# 主函数
if __name__ == '__main__':
data_one()
版权属于:kenvie
本文链接:https://cloud.tencent.com/developer/article/1937758
商业转载请联系作者获得授权,非商业转载请注明出处。