前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python利用猫眼票房接口及pyecharts制作图表

Python利用猫眼票房接口及pyecharts制作图表

作者头像
kenvie
发布2022-01-20 16:39:15
7580
发布2022-01-20 16:39:15
举报
文章被收录于专栏:kenvie

安装pip包

安装requests包

代码语言:javascript
复制
pip install requests

安装pyecharts包

代码语言:javascript
复制
pip install pyecharts

演示

柱状图:

折线图:

饼图:

代码实现

代码语言:javascript
复制
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

商业转载请联系作者获得授权,非商业转载请注明出处。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 11 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装pip包
  • 演示
  • 代码实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档