可视化国产/进口电影票房榜单
前言
党的十八大以来,国产电影产业与事业快速发展,创作水平不断提高,题材类型丰富多元,受众口碑不断提升,在市场竞争中表现愈发突出,已成为广大人民群众首选的文化消费形式。国产电影的高质量发展,有着多重的表现。
首先是主旋律电影的复苏。既往,主旋律似乎和院线电影难以相容,取得商业成功的主旋律电影少之又少,而一些商业电影的价值取向也似乎与主旋律貌合神离。近年来,随着国内电影工业水平不断提升,电影作品对主旋律的表达方式也更为细腻深入,观众对主旋律影片的认可度逐渐提高。诸如2016年的《湄公河行动》、2018年的《红海行动》、2019年的《我和我的祖国》、2020年的《八佰》《我和我的家乡》、2021年的《长津湖》《中国医生》等影片,充分吸纳了类型片的叙事手段,凭借其精良的制作与深厚的情怀,在票房、口碑上实现了双丰收,《长津湖》更是打破了影史票房纪录,创造了中国电影的奇迹。
其次是商业电影的繁盛。过去的十年是中国电影扩展市场,开疆拓土的十年。2012年以来,电影市场保持着高速增长的态势,2012年全国银幕数有13118块,到2021年达到了82248块,基本覆盖了全国的城市与城镇;2019年全国总票房达到了642亿元,其后由于疫情影响票房总量有一定程度下降,但也超越北美成为世界第一。从2012年《人再囧途之泰囧》拿下12亿票房成为首部超十亿票房国产电影并获得当年票房冠军之后,国产电影开始频频打破票房纪录,在好莱坞电影的冲击下茁壮成长,让引进片称霸票房榜的时代成为了过去式。2015年,《捉妖记》取得24亿票房;2016年,《美人鱼》取得33亿票房;2017年,《战狼2》取得56亿票房;再到《长津湖》的57亿票房,国产电影票房冠军几经易手,人们对国产电影的信心也与日俱增。在此期间,也出现了《心花路放》《夏洛特烦恼》《流浪地球》《你好,李焕英》《唐人街探案》系列等商业表现优秀的电影作品,国产电影的市场一路向好。
为了进一步将国产电影和进口电影的票房进行一个更好地对比,此次选题用大数据可视化的方式直观的将数据展示出来,可视化主要使用 pyecharts >= 1.9。
数据分析
数据集概况
数据集分为四个文件,分别是电影票房表现概览、票房榜、电影票房三十日时段趋势数据和电影票房三十日时段详情。
数据维度:
电影票房表现概览维度31,数据量100:
票房榜维度8,数据量150
电影票房三十日时段趋势数据维度16,数据量4620
电影票房三十日时段详情数据维度15,数据量3392
数据可视化过程
引包
import numpy as np
import pandas as pd
from collections import Counter
from pyecharts import options as opts
from pyecharts.charts import*from pyecharts.commons.utils import JsCode
from pyecharts.globalsimport ThemeType
from pyecharts.components import Table
from pyecharts.options import ComponentTitleOpts
import datetime
票房榜数据概览
data = pd.read_excel(r"/home/mw/input/movie7110/票房榜.xlsx")
data.head(1)
票房榜数据字段处理
data["年份"]= data["上映日期"].apply(lambda x:str(x.split("-")[0]))
data["票房"]= data["票房"].apply(lambda x:round(x/100000000,2))
data = data.rename(columns={"票房":"票房/亿"})
data.head(1)
电影票房表现数据概览
data_haed = pd.read_excel(r"/home/mw/input/movie7110/电影票房表现概览.xlsx")
data_haed.head(1)
电影票房数据字段处理
data_haed_all = data.merge(data_haed, how="left", on=['EnMovieID'])
data_haed_all["首映票房"]= data_haed_all["首映票房"].apply(lambda x:round(x/100000000,2))
data_haed_all["首周票房"]= data_haed_all["首周票房"].apply(lambda x:round(x/100000000,2))
data_haed_all["首周末票房"]= data_haed_all["首周末票房"].apply(lambda x:round(x/100000000,2))
data_haed_all = data_haed_all.rename(columns={"电影_x":"电影","首映票房":"首映票房/亿","首周票房":"首周票房/亿","首周末票房":"首周末票房/亿"})
data_haed_all.info()
data_haed_all = data_haed_all.drop(labels=["EnMovieID","DBOMovieID","EFMTMovieID","电影_y","GenreMainID"],axis=1)
colums =list(data_haed_all)print(colums)
data_all = data_haed_all[data_haed_all["榜单类别"]=="全部"]
data_china = data_haed_all[data_haed_all["榜单类别"]=="国产"]
data_foreign = data_haed_all[data_haed_all["榜单类别"]=="进口"]
data_cat =[data_all, data_china, data_foreign]
cat =["全部","国产","进口"]
榜单类别 - 国产/进口 - TOP50
tab = Tab()
headers = colums
rows_china = data_china[colums].apply(lambda x:list(x), axis=1).values.tolist()
rows_foreign = data_foreign[colums].apply(lambda x:list(x), axis=1).values.tolist()
attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示
table_china = Table()
attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示
table_china.add(headers, rows_china, attributes)
table_china.set_global_opts(
title_opts=ComponentTitleOpts(title=f"榜单类别 - 国产 - TOP50", subtitle=""))
table_foreign = Table()
attributes ={"class":"fl-table","style":"margin: 0 auto"}# 居中显示
table_foreign.add(headers, rows_foreign, attributes)
table_foreign.set_global_opts(
title_opts=ComponentTitleOpts(title=f"榜单类别 - 进口 - TOP50", subtitle=""))
table = Table()
table.add([],[], attributes)
table.set_global_opts(
title_opts=ComponentTitleOpts(title="键盘左右键移动视图查看", subtitle=""))
tab.add(table_china,"国产")
tab.add(table_foreign,"进口")
tab.add(table,"点击预览")
tab.render_notebook()
电影票房榜单 - TOP50
line_max =max(max(data_all['场均人次'].tolist()),max(data_all['平均票价'].tolist()))
bar_max =max(data_all['票房/亿'].tolist())
bar_all =(
Bar(init_opts=opts.InitOpts(width="1000px", height="600px",theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_all['电影'].tolist())# x轴.add_yaxis(
series_name="票房/亿",# 柱形图系列名称
y_axis=data_all['票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False, position='top', formatter="{c}/亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#ee3f4d'
}, {
offset: 1,
color: '#eea2a4'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':8,'shadowColor':'rgba(0, 0, 0, 0.4)','shadowOffsetX':10,'shadowOffsetY':10,'borderColor':'rgb(220,220,220)','borderWidth':1}}).extend_axis(# 设置次坐标轴
yaxis=opts.AxisOpts(
name="",# 次坐标轴名称
type_="value",# 次坐标手类型
min_=-2* line_max,# 最小值
max_=2* line_max,# 最大值
is_show=False,# 是否显示
axisline_opts=opts.AxisLineOpts(is_show=False,# y轴线不显示
linestyle_opts=opts.LineStyleOpts(color='#2486b9')),# 设置线颜色, 字体颜色也变
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线不显示
axislabel_opts=opts.LabelOpts(formatter="{value}"),# 次坐标轴数据显示格式)).set_global_opts(title_opts=opts.TitleOpts(title="电影票房 - top50",# 标题
title_textstyle_opts=opts.TextStyleOpts(font_size=20),# 主标题字体大小
subtitle="国产/进口",# 次坐标轴
pos_left='center',
pos_top='0.8%'),# 标题位置
legend_opts=opts.LegendOpts(is_show=True,
pos_top=50,
orient="horizontal",),# 不显示图例
tooltip_opts=opts.TooltipOpts(
trigger="axis",
axis_pointer_type="shadow"),# 提示框
xaxis_opts=opts.AxisOpts(name='',
type_='category',
axislabel_opts=opts.LabelOpts(rotate=360),),
yaxis_opts=opts.AxisOpts(type_="value",# y轴类型
max_=bar_max,
name='票房/亿',# y轴名称
name_location='middle',# y轴名称位置
name_gap=70,# y轴名称距离轴线距离
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
axislabel_opts=opts.LabelOpts(formatter="{value}"),),# 轴标签显示方式
datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False)))
line_all =(
Line().add_xaxis(xaxis_data=data_all['电影'].tolist())# x轴.add_yaxis(
series_name="场均人次",# 名称
yaxis_index=1,# 次坐标
is_smooth=True,# 线条样式 , 是否设置成圆滑曲线
y_axis=data_all['场均人次'].tolist(),
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#2486b9'
}, {
offset: 1,
color: '#FF00FF'
}], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#2486b9'}},
label_opts=opts.LabelOpts(is_show=False),# 显示数据标签).add_yaxis(
series_name="平均票价",# 名称
yaxis_index=1,# 次坐标
is_smooth=True,# 线条样式 , 是否设置成圆滑曲线
y_axis=data_all['平均票价'].tolist(),
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#1a6840'
}, {
offset: 1,
color: '#66c18c'
}], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#66c18c'}},
label_opts=opts.LabelOpts(is_show=False),# 显示数据标签))
bar_all.overlap(line_all)# 图表组合
bar_all.render_notebook()
电影票房榜单 - 国产/进口 - TOP50
tab_rank = Tab()for i inrange(1,3):
line_max =max(max(data_cat[i]['场均人次'].tolist()),max(data_cat[i]['平均票价'].tolist()))
bar_max =max(data_cat[i]['票房/亿'].tolist())
bar1 =(
Bar(init_opts=opts.InitOpts(width="1000px", height="600px",theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_cat[i]['电影'].tolist())# x轴.add_yaxis(
series_name="票房/亿",# 柱形图系列名称
y_axis=data_cat[i]['票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False, position='top', formatter="{c}/亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#ee3f4d'
}, {
offset: 1,
color: '#eea2a4'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],"shadowColor":'rgb(0, 160, 221)',}}).extend_axis(# 设置次坐标轴
yaxis=opts.AxisOpts(
name="",# 次坐标轴名称
type_="value",# 次坐标手类型
min_=-2* line_max,# 最小值
max_=2* line_max,# 最大值
is_show=False,# 是否显示
axisline_opts=opts.AxisLineOpts(is_show=False,# y轴线不显示
linestyle_opts=opts.LineStyleOpts(color='#2486b9')),# 设置线颜色, 字体颜色也变
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线不显示
axislabel_opts=opts.LabelOpts(formatter="{value}"),# 次坐标轴数据显示格式)).set_global_opts(title_opts=opts.TitleOpts(title=f"{cat[i]}电影票房 - top50",# 标题
title_textstyle_opts=opts.TextStyleOpts(font_size=20),# 主标题字体大小
subtitle="",# 次坐标轴
pos_left='center',
pos_top='0.8%'),# 标题位置
legend_opts=opts.LegendOpts(is_show=True,
pos_top=35,
orient="horizontal",),# 不显示图例
tooltip_opts=opts.TooltipOpts(
trigger="axis",
axis_pointer_type="shadow"),# 提示框
xaxis_opts=opts.AxisOpts(name='',
type_='category',
axislabel_opts=opts.LabelOpts(rotate=360),),
yaxis_opts=opts.AxisOpts(type_="value",# y轴类型
max_=bar_max,
name='票房/亿',# y轴名称
name_location='middle',# y轴名称位置
name_gap=70,# y轴名称距离轴线距离
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
axislabel_opts=opts.LabelOpts(formatter="{value}"),),# 轴标签显示方式
datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False)))
line1 =(
Line().add_xaxis(xaxis_data=data_cat[i]['电影'].tolist())# x轴.add_yaxis(
series_name="场均人次",# 名称
yaxis_index=1,# 次坐标
is_smooth=True,# 线条样式 , 是否设置成圆滑曲线
y_axis=data_cat[i]['场均人次'].tolist(),
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#2486b9'
}, {
offset: 1,
color: '#FF00FF'
}], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#2486b9'}},
label_opts=opts.LabelOpts(is_show=False),# 显示数据标签).add_yaxis(
series_name="平均票价",# 名称
yaxis_index=1,# 次坐标
is_smooth=True,# 线条样式 , 是否设置成圆滑曲线
y_axis=data_cat[i]['平均票价'].tolist(),
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#1a6840'
}, {
offset: 1,
color: '#66c18c'
}], false)""",),"opacity":0.7,"barBorderRadius":[45,45,45,45],"shadowColor":'rgb(0, 160, 221)',}},
linestyle_opts={'normal':{'width':3,'shadowColor':'rgba(0, 0, 0, 0.5)','shadowBlur':5,'shadowOffsetY':10,'shadowOffsetX':10,'curve':0.5,'color':'#66c18c'}},
label_opts=opts.LabelOpts(is_show=False),# 显示数据标签))
bar1.overlap(line1)# 图表组合
tab_rank.add(bar1, cat[i])
tab_rank.add(table,"点击预览")
tab_rank.render_notebook()
计算上榜电影标签汇总
tags_china =[]
tag_china = data_china['作品类型'].tolist()for t in tag_china:try:for i in t.split('/'):
tags_china.append(i)except:continue
tags_china_pair =[]for key, value in Counter(tags_china).items():
tags_china_pair.append([key, value])print(tags_china_pair)
tags_foreign =[]
tag_foreign = data_foreign['作品类型'].tolist()for t in tag_foreign:try:for i in t.split('/'):
tags_foreign.append(i)except:continue
tags_foreign_pair =[]for key, value in Counter(tags_foreign).items():
tags_foreign_pair.append([key, value])
国产-进口上榜 - TOP50 - 详情分布
pie =(
Pie(init_opts=opts.InitOpts(width="1000px", height="900px", theme='light')).add('国产年份',[list(z)for z inzip(data_china_year.index.tolist(),
data_china_year.values.tolist())],
radius=['55','100'],
center=['33%','30%']).add('进口',[list(z)for z inzip(data_foreigna_year.index.tolist(),
data_foreigna_year.values.tolist())],
radius=['55','100'],
center=['75%','30%']).add('国产电影标签', tags_china_pair,
radius=['55','100'],
center=['33%','80%']).add('进口电影标签', tags_foreign_pair,
radius=['55','100'],
center=['75%','80%']).set_series_opts(
label_opts=opts.LabelOpts(formatter="{b}: {c}", font_size=14),
tooltip_opts=opts.TooltipOpts(trigger="item", formatter="{a} <br/>{b}: {c} ({d}%)"),
itemstyle_opts={"normal":{'shadowBlur':2,"borderColor":'#87CEFA',"borderWidth":3,'shadowColor':'#87CEFA','opacity':1}}).set_global_opts(
legend_opts=opts.LegendOpts(is_show=False, pos_top='5%'),
title_opts=[dict(
text=f'国产-进口上榜 - TOP50 - 详情分布',
left='center',
top='1%',
textStyle=dict(
color='#000',
fontSize=24)),dict(
text=f'国产分布',
left='28%',
top='10%',
textStyle=dict(
color='#999999',
fontSize=18)),dict(
text=f'进口分布',
left='70%',
top='10%',
textStyle=dict(
color='#999999',
fontSize=18)),dict(
text=f'国产电影标签',
left='28%',
top='55%',
textStyle=dict(
color='#999999',
fontSize=18)),dict(
text=f'进口电影标签',
left='70%',
top='55%',
textStyle=dict(
color='#999999',
fontSize=18)),],))
pie.render_notebook()
国产电影上映首周票房表现 -Top50
bar_china =(
Bar(init_opts=opts.InitOpts(width="1200px", height="600px", theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_china['电影'].tolist())# x轴.add_yaxis(
series_name="首映票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_china['首映票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#126bae'
}, {
offset: 1,
color: '#619ac3'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
series_name="首周票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_china['首周票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#ea7293'
}, {
offset: 1,
color: '#ec8aa4'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
series_name="首周末票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_china['首周末票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9eccab'
}, {
offset: 1,
color: '#a4cab6'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).reversal_axis()# .set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="国产电影上映首周票房表现 -Top50",# 标题
title_textstyle_opts=opts.TextStyleOpts(font_size=20),#主标题字体大小
subtitle="",# 次坐标轴
pos_left='center'),# 标题位置
legend_opts=opts.LegendOpts(
is_show=True,
pos_top=30,
orient="horizontal"),# 不显示图例
tooltip_opts=opts.TooltipOpts(
trigger="axis",
axis_pointer_type="shadow"),# 提示框
yaxis_opts=opts.AxisOpts(name='',
type_='category',# axislabel_opts=opts.LabelOpts(rotate=30),),
xaxis_opts=opts.AxisOpts(type_="value",# y轴类型# max_=5000000,
name='',# y轴名称
name_location='middle',# y轴名称位置
name_gap=70,# y轴名称距离轴线距离
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
axislabel_opts=opts.LabelOpts(formatter="{value}")),# 轴标签显示方式
datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False,
orient="vertical")))
bar_china.render_notebook()
进口电影上映首周票房表现 -Top50
bar_foreign =(
Bar(init_opts=opts.InitOpts(width="1200px", height="600px", theme='light'))# 设置图表大小.add_xaxis(xaxis_data=data_foreign['电影'].tolist())# x轴.add_yaxis(
series_name="首映票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_foreign['首映票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#126bae'
}, {
offset: 1,
color: '#619ac3'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
series_name="首周票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_foreign['首周票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#ea7293'
}, {
offset: 1,
color: '#ec8aa4'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).add_yaxis(
series_name="首周末票房/亿",#柱形图系列名称
stack='stack1',
y_axis=data_foreign['首周末票房/亿'].tolist(),# 数据
label_opts=opts.LabelOpts(is_show=False,position='top',formatter="{c} 亿"),# 显示数据标签
itemstyle_opts={"normal":{"color": JsCode("""new echarts.graphic.LinearGradient(0, 0, 0, 1, [{
offset: 0,
color: '#9eccab'
}, {
offset: 1,
color: '#a4cab6'
}], false)""",),"opacity":0.8,# "barBorderRadius": [20, 20, 0, 0],'shadowBlur':4,'shadowColor':'rgba(0, 0, 0, 0.3)','shadowOffsetX':5,'shadowOffsetY':5,'borderColor':'rgb(220,220,220)','borderWidth':1}}).reversal_axis()# .set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="进口电影上映首周票房表现 -Top50",# 标题
title_textstyle_opts=opts.TextStyleOpts(font_size=20),#主标题字体大小
subtitle="",# 次坐标轴
pos_left='center'),# 标题位置
legend_opts=opts.LegendOpts(
is_show=True,
pos_top=30,
orient="horizontal"),# 不显示图例
tooltip_opts=opts.TooltipOpts(
trigger="axis",
axis_pointer_type="shadow"),# 提示框
yaxis_opts=opts.AxisOpts(name='',
type_='category',# axislabel_opts=opts.LabelOpts(rotate=30),),
xaxis_opts=opts.AxisOpts(type_="value",# y轴类型# max_=5000000,
name='',# y轴名称
name_location='middle',# y轴名称位置
name_gap=70,# y轴名称距离轴线距离
axistick_opts=opts.AxisTickOpts(is_show=False),# 刻度线
axisline_opts=opts.AxisLineOpts(is_show=False),# y轴线
splitline_opts=opts.SplitLineOpts(is_show=True),# y轴网格线
axislabel_opts=opts.LabelOpts(formatter="{value}")),# 轴标签显示方式
datazoom_opts=opts.DataZoomOpts(is_zoom_lock=False,
orient="vertical")))
bar_foreign.render_notebook()
电影票房三十日时段详情
data_movie_time = pd.read_excel(r"/home/mw/input/movie7110/电影票房三十日时段详情.xlsx")
data_movie_time["当前票房"]= data_movie_time["当前票房"].apply(lambda x:round(x/10000000,2))
data_movie_time["当前场次"]= data_movie_time["当前场次"].apply(lambda x:round(x/10000,2))
data_movie_time["当前人次"]= data_movie_time["当前人次"].apply(lambda x:round(x/1000000,2))
data_movie_time = data_movie_time.rename(columns={"当前票房":"当前票房/千万","当前场次":"当前场次/万","当前人次":"当前人次/百万"})
data_movie_time.head(2)
movie_chang = data_movie_time[data_movie_time["电影"]=="长津湖"]
长津湖上映后三十日电影票房表现
line = Line(
init_opts=opts.InitOpts(
theme='light',
width='1000px',
height='600px'))
line.add_xaxis(
movie_chang["日期"].tolist())
colums =["当前票房/千万","当前人次/百万","当前场次/万"]for i inrange(3):
line.add_yaxis(
colums[i],
movie_chang[colums[i]],
is_symbol_show=False,
is_smooth=True,
is_selected=True,
areastyle_opts=opts.AreaStyleOpts(opacity=0.5),
label_opts=opts.LabelOpts(is_show=False),
z=100,
linestyle_opts={"normal":{"shadowColor":'rgba(0, 0, 0, .5)',"shadowBlur":0,"shadowOffsetY":1,"shadowOffsetX":1,},},)
line.set_global_opts(
xaxis_opts=opts.AxisOpts(
boundary_gap=False,
axislabel_opts=opts.LabelOpts(margin=30, color="black"),
axistick_opts=opts.AxisTickOpts(is_show=False),),
yaxis_opts=opts.AxisOpts(
name='',
axisline_opts=opts.AxisLineOpts(is_show=True),
axistick_opts=opts.AxisTickOpts(is_show=False),
splitline_opts=opts.SplitLineOpts(
is_show=True,
linestyle_opts=opts.LineStyleOpts(color='#483D8B'))),
tooltip_opts=opts.TooltipOpts(
is_show=True, trigger='axis', axis_pointer_type='cross'),
title_opts=opts.TitleOpts(title="长津湖上映后三十日电影票房表现",# 标题
title_textstyle_opts=opts.TextStyleOpts(font_size=18),#主标题字体大小
subtitle="2021-09-30~2021-10-30",# 次坐标轴
pos_left='center'),# 标题位置
legend_opts=opts.LegendOpts(
is_show=True,
pos_top=45,
orient="horizontal"),# 不显示图例
graphic_opts=[
opts.GraphicGroup(
graphic_item=opts.GraphicItem(id_='1',left="center", top="center", z=-1),
children=[
opts.GraphicImage(graphic_item=opts.GraphicItem(id_="logo",
left='center',
z=-1),
graphic_imagestyle_opts=opts.GraphicImageStyleOpts(
image="https://img2.baidu.com/it/u=3979355417,3562690433&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=388",
width=1000,
height=600,
opacity=0.5,))])])
line.set_series_opts(
markarea_opts=opts.MarkAreaOpts(
is_silent=True,
label_opts=opts.LabelOpts(position='bottom', color='#000000'),
itemstyle_opts=opts.ItemStyleOpts(color='#1E90FF', opacity=0.2),
data=[
opts.MarkAreaItem(name="正式上映\n国庆档", x=("2021-09-30","2021-10-01")),
opts.MarkAreaItem(name="高峰期", x=("2021-10-05","2021-10-07")),
opts.MarkAreaItem(name="第三周\n小高峰", x=("2021-10-15","2021-10-17")),]),)
line.set_colors(colors=['#80FFA5','#00DDFF','#FF0087'])
line.render_notebook()
长津湖电影评分
chart = Gauge()
chart.add("",[("猫眼评分",9.5)],
max_=10,
start_angle=200,
end_angle=-20,
pointer=opts.GaugePointerOpts(
is_show=True),
itemstyle_opts=opts.ItemStyleOpts(
color='rgba(50, 163, 107, 0.3)'),
detail_label_opts=opts.GaugeDetailOpts(
border_radius=8,
offset_center=[0,'15%'],
font_size=50,
font_weight='bolder',
formatter='{value}',),
axisline_opts=opts.AxisLineOpts(
is_show=True,
linestyle_opts=opts.LineStyleOpts(
width=30,
color=[(0.8,"#67e0e3"),(0.98,"#D4587A"),(1,"#67e0e3")])),
title_label_opts=opts.GaugeTitleOpts(
color='rgba(217, 48, 118, 0.9)',
offset_center=[0,'-35%'],
font_size=20,
font_weight='bolder',))
chart.set_global_opts(
title_opts=opts.TitleOpts(
title="长津湖",
pos_right='0%',
pos_bottom='30%',
title_textstyle_opts=opts.TextStyleOpts(
color='rgba(217, 48, 118, 0.1)',
font_size=80)),)
chart.render_notebook()
chart_1 = Gauge(# init_opts=opts.InitOpts(# width='500px',# height='500px'# ))
chart_1.add("",[("豆瓣评分",7.4)],
max_=10,
start_angle=200,
end_angle=-20,
pointer=opts.GaugePointerOpts(
is_show=True),
itemstyle_opts=opts.ItemStyleOpts(
color='rgba(50, 163, 107, 0.3)'),
detail_label_opts=opts.GaugeDetailOpts(
border_radius=8,
offset_center=[0,'15%'],
font_size=50,
font_weight='bolder',
formatter='{value}',),
axisline_opts=opts.AxisLineOpts(
is_show=True,
linestyle_opts=opts.LineStyleOpts(
width=30,
color=[(0.7,"#37a2da"),(0.8,"#D4587A"),(1,"#37a2da")])),
title_label_opts=opts.GaugeTitleOpts(
color='rgba(217, 48, 118, 0.9)',
offset_center=[0,'-35%'],
font_size=20,
font_weight='bolder',))
chart_1.set_global_opts(
title_opts=opts.TitleOpts(
title="长津湖",
pos_right='0%',
pos_bottom='30%',
title_textstyle_opts=opts.TextStyleOpts(
color='rgba(217, 48, 118, 0.1)',
font_size=80)),)
chart_1.render_notebook()
分析总结
①在全部的榜单类别top50中排在前面的都是进五年新出的电影,其中第一名是2021年上映的长津湖,说明电影行业的发展是非常快速的,推陈出新的要求是广大影迷朋友们所追求的。
②排在榜单前六的都是国产电影,说明大家对国产电影的喜爱程度非常之高,其中排在前二的是不可多得的主旋律好电影,非常受大家的追捧。
③在结合票房分析的同时也要结合每一部电影它的组成,可以看到战狼的票价是排在前几的电影中最低的,同时也是场均人次最高的,说明战狼这部电影的电影票房是实打实的非常有质量的票房数据,非常说明战狼这部电影的影响力和受大家喜爱程度。
④在进口的电影中,可以非常明显的看到几个场均人次异常突出的几部电影,如阿凡达,变形金刚三和泰坦尼克号,可以看出来这三部电影的上座率非常高,说明质量非常的好,不愧是经典中的经典。
⑤在国产电影和进口电影的对拼中可以看到在2018年之前进口电影的市场占有率是高于国产电影的,到2018年国产电影成长到足够抗衡进口电影,如今2021年国产电影更是已经碾压进口电影,占领大部分中国市场。
⑥可以看到国产电影和进口电影都有一个经久不衰的主题,那就是动作篇,可以想到动作片是非常受全世界影迷的喜爱的,其中最明显的差距是国产电影中的科幻片很少,仍需要不断地发展才能满足更多影迷,不同影迷的需要。
⑦在不同的平台上长津湖的评分是不同的,高也好低也好,不同的平台的用户的口味是不同的,这就是电影的魅力所在,让不同的人体验到不同的感受。
总结
只要是好的电影,现今的观众都会予以支持。
创作者在生产创作阶段就充分考虑目标受众和目标受众的需求。具有强情节、强情绪、强话题等核心竞争力的影片,哪怕前期热度不具优势,映后也会凭借优质的内容不断发酵,激发二轮观影动机;对于能够满足市场刚需的内容,像动作、喜剧、悬疑犯罪、亲子动画等类型片,也是能够持续号召目标受众观影的常备题材;基于优质的类型片持续运作、打造具有号召力的IP或系列电影,则能将观影动机前置;通过强化电影的社交属性,比如通过打造仪式感来附加观众额外的观影动机,甚至能够为市场培育出新的档期。
总而言之,观众并非不爱看电影了,只是观众更加倾向选择好电影,只要是内容足够优秀,在哪里都是档期。
挑战就是新的起点。目前,8万块银幕已经遍布中国的大城小镇,不断提升的观影环境,日益丰富的电影传播渠道和购票的便利性等,都是中国电影高质量发展的重要保障。“电影是综合性艺术,与国家的综合实力联系紧密。依托发达的经济、繁荣的文化、先进的科技,中国电影理应进入品质年代,我们有理由相信中国电影未来可期。”中国电影家协会副主席任仲伦说。
版权归原作者 汤姆z 所有, 如有侵权,请联系我们删除。