当前位置: 首页 > news >正文

免费网站新域名百度竞价效果怎么样

免费网站新域名,百度竞价效果怎么样,网站建设 排名,wordpress一栏主题英雄联盟S14世界赛选手数据可视化 由于本学期有一门数据可视化课程,课程结课作业要求完成一个数据可视化的小Demo,于是便有了这个小项目,课程老师要求比较简单,只要求熟练运用可视化工具展示数据,并不要求数据来源&am…

英雄联盟S14世界赛选手数据可视化

由于本学期有一门数据可视化课程,课程结课作业要求完成一个数据可视化的小Demo,于是便有了这个小项目,课程老师要求比较简单,只要求熟练运用可视化工具展示数据,并不要求数据来源,因此这个小项目非常简单


项目简介

这是一个基于 PyEcharts 的数据可视化小项目,展示了英雄联盟 S14 世界赛选手的关键数据表现,适合作为数据可视化课程作业或兴趣项目。

项目特点:

  • 数据源权威,来源于 Kaggle。
  • 涉及多种可视化类型,包括柱状图、箱形图、雷达图等。
  • 共包含 14 个可视化图表,分布在 3 个 HTML 页面中,方便浏览与展示。

完整代码:英雄联盟S14世界赛选手数据可视化

数据来源

数据来自 Kaggle 平台的 2024 LoL Championship Player Stats & Swiss Stage。

  • 数据涵盖选手的各项核心指标,如 KDA、场均击杀、场均死亡等。
  • 细化到每分钟视野分数、野区控制等高级数据。

数据示例

TeamNamePlayerNamePositionGamesPenta KillsSolo KillsCountryFlashKeybind
Top Esports369Top802ChinaD
Dplus KIAaimingAdc902South KoreaF
MAD Lions KOIalvaroSupport500SpainD
LNG EsportszikaTop802ChinaD

效果展示

主要采用PyEcharts来完成数据可视化

数据总览

该模块主要有一个各队伍平均胜率的柱状图和全部选手的国籍分布饼图组成

在这里插入图片描述

# 计算各队伍平均胜率,并将其转换为百分数形式(乘以100并保留两位小数)
team_win_rates = df.groupby('TeamName')['Win rate'].mean().reset_index()
team_win_rates['Win rate'] = team_win_rates['Win rate'].apply(lambda x: round(x * 100, 2))
print(team_win_rates)
# 绘制柱状图
bar = Bar(init_opts=opts.InitOpts(width="1100px", height="500px")
)
bar.add_xaxis(team_win_rates['TeamName'].tolist())
bar.add_yaxis("平均胜率", team_win_rates['Win rate'].tolist(), category_gap="60%")
bar.set_global_opts(title_opts=opts.TitleOpts(title="各队伍平均胜率", subtitle=""),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)),yaxis_opts=opts.AxisOpts(name="胜率", min_=0, max_=100),visualmap_opts=opts.VisualMapOpts(is_show=False, max_=100, min_=0)
)
bar.render("static/charts/team_win_rates.html")

在这里插入图片描述

# 国家分布
# 按照国家进行分组,计算每个国家的选手数量
grouped_data = df.groupby('Country').size()# 将结果转换为 DataFrame,并命名为 'Count'
country_data = grouped_data.reset_index(name='Count')
print(country_data)
country_pie = (Pie(init_opts=opts.InitOpts(theme="macarons")).add("", [list(z) for z in zip(country_data['Country'], country_data['Count'])]).set_global_opts(title_opts=opts.TitleOpts(title=""))
)
country_pie.render("static/charts/country_distribution_chart.html")

主要数据

该模块主要涉及了选手的各方位数据总览情况,能够直观的观察各方面数据突出的选手,其中包括:场均击杀、

场均KDA、场均死亡、场均助攻、辅助视野综合得分、选手平均击杀、选手闪现按键情况

在这里插入图片描述

# 场均击杀
sorted_df = df.sort_values(by='Avg kills', ascending=False)
avg_kills = sorted_df[['PlayerName', 'Avg kills']]
avg_kills_top10 = avg_kills[0:10]
print(avg_kills_top10)
# 创建Bar实例,用于构建柱状图
bar = Bar(init_opts=opts.InitOpts(width="600px", height="300px")
)
# 添加x轴数据,即选手姓名
bar.add_xaxis(avg_kills_top10['PlayerName'].tolist())
# 添加y轴数据,即场均击杀数,并设置系列名称为"场均击杀数"
bar.add_yaxis("场均击杀数", avg_kills_top10['Avg kills'].tolist())
# 设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title="场均击杀榜前十"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45),  # 让x轴标签旋转45度,避免文字重叠),yaxis_opts=opts.AxisOpts(name="场均击杀数"),  # 设置y轴名称visualmap_opts=opts.VisualMapOpts(is_show=False, max_=6, min_=4)
)
bar.render("static/charts/avg_kills_top10.html")

在这里插入图片描述

# KDA
kda_top10 = df.sort_values(by='KDA', ascending=False)[['PlayerName', 'KDA']][0:10]
print(kda_top10)
bar = Bar(init_opts=opts.InitOpts(width="600px", height="300px")
)
bar.add_xaxis(kda_top10['PlayerName'].tolist())bar.add_yaxis('场均KDA', kda_top10['KDA'].tolist())
# 设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title="场均KDA前十"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45),  # 让x轴标签旋转45度,避免文字重叠),yaxis_opts=opts.AxisOpts(name="场均KDA"),  # 设置y轴名称visualmap_opts=opts.VisualMapOpts(is_show=False, max_=10, min_=6)
)
bar.render("static/charts/kda_top10.html")

在这里插入图片描述

# 场均死亡
deaths_top10 = df.sort_values(by='Avg deaths', ascending=False)[['PlayerName', 'Avg deaths']][0:10]
print(deaths_top10)
bar = Bar(init_opts=opts.InitOpts(width="600px", height="300px", theme="macarons"))
bar.add_xaxis(deaths_top10['PlayerName'].tolist())
bar.add_yaxis('场均死亡', deaths_top10['Avg deaths'].tolist())
# 设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title="场均死亡前十"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45),  # 让x轴标签旋转45度,避免文字重叠),yaxis_opts=opts.AxisOpts(name="场均死亡"),  # 设置y轴名称visualmap_opts=opts.VisualMapOpts(is_show=False, max_=6, min_=4)
)
bar.render("static/charts/deaths_top10.html")

在这里插入图片描述

# 场均助攻
assists_top10 = df.sort_values(by='Avg assists', ascending=False)[['PlayerName', 'Avg assists']][0:10]
print(assists_top10)
bar = Bar(init_opts=opts.InitOpts(width="600px", height="300px", theme="macarons")
)
bar.add_xaxis(assists_top10['PlayerName'].tolist())bar.add_yaxis('场均助攻', assists_top10['Avg assists'].tolist())# 设置全局配置项
bar.set_global_opts(title_opts=opts.TitleOpts(title="场均助攻前十"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45),  # 让x轴标签旋转45度,避免文字重叠),yaxis_opts=opts.AxisOpts(name="场均助攻"),  # 设置y轴名称visualmap_opts=opts.VisualMapOpts(is_show=False, max_=13, min_=10)
)
bar.render("static/charts/assists_top10.html")

其中每分钟视野分数(VSPM)、每分钟赢得的野区分数(每分钟赢得的野区分数)、每分钟控制野区分数(Avg WCPM)、每分钟视野控制分数(Avg VWPM)各自的权重为1,可自行更改

在这里插入图片描述

# 辅助野区视野排行
df['custom_sort'] = df['VSPM'] * 25 + df['Avg WPM'] * 25 + df['Avg WCPM'] * 25 + df['Avg VWPM'] * 25
support_top_10 = df.sort_values(by='custom_sort', ascending=False)[['PlayerName', 'VSPM', 'Avg WPM', 'Avg WCPM', 'Avg VWPM', 'custom_sort']][0:10]
print(support_top_10)
# 创建堆叠柱状图
bar_stacked = Bar(init_opts=opts.InitOpts(width="1000px", height="400px", theme='macarons')
)
# 添加 X 轴数据(选手名字)
bar_stacked.add_xaxis(support_top_10['PlayerName'].tolist())
# 添加堆叠柱状图的每一项数据
bar_stacked.add_yaxis("每分钟视野分数", support_top_10['VSPM'].tolist(), stack="stack1")
bar_stacked.add_yaxis("每分钟赢得的野区分数", support_top_10['Avg WPM'].tolist(), stack="stack1")
bar_stacked.add_yaxis("每分钟控制野区分数", support_top_10['Avg WCPM'].tolist(), stack="stack1")
bar_stacked.add_yaxis("每分钟视野控制分数", support_top_10['Avg VWPM'].tolist(), stack="stack1")
# 设置全局配置
bar_stacked.set_global_opts(title_opts=opts.TitleOpts(title="辅助野区视野排行"),yaxis_opts=opts.AxisOpts(name=""),xaxis_opts=opts.AxisOpts(name="选手"),legend_opts=opts.LegendOpts(pos_left="right", orient="vertical"),  # 设置图例在左侧
)
# 渲染图表到 HTML 文件
bar_stacked.render("static/charts/support_top_10.html")

各位置场均击杀箱形图:

在这里插入图片描述

# 准备箱线图数据
data = [df[df['Position'] == pos]['Avg kills'].tolist() for pos in df['Position'].unique()]
print(data)
boxplot = Boxplot(init_opts=opts.InitOpts(width="600px", height="400px")
)
boxplot.add_xaxis(df['Position'].unique().tolist())
boxplot.add_yaxis("平均击杀数", boxplot.prepare_data(data), itemstyle_opts=opts.ItemStyleOpts(color="black"))
boxplot.set_global_opts(title_opts=opts.TitleOpts(title="不同位置选手平均击杀数分布"),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=45)  # 此处也是修改为axislabel_opts),yaxis_opts=opts.AxisOpts(name="平均击杀数")
)
boxplot.render("static/charts/avg_kills_distribution.html")

在这里插入图片描述

# 闪现数据
flash = df.groupby('FlashKeybind').size()
flash_data = flash.reset_index(name='flash_group')
创建饼图
pie = Pie(init_opts=opts.InitOpts(width="400px", height="400px")
)
# 添加数据,设置标签格式
pie.add("闪现按键使用情况",[list(z) for z in zip(flash_data['FlashKeybind'].tolist(), flash_data['flash_group'].tolist())],radius=["30%", "60%"],label_opts=opts.LabelOpts(formatter="{b}")
)
# 设置标题
pie.set_global_opts(title_opts=opts.TitleOpts(title="闪现按键"))# 渲染到本地文件
pie.render("static/charts/flash.html")

我的主队

由于作者喜欢TheShy选手,所以主队是WBG,但是此次世界赛TheShy选手选择了休息,但是也没有新的主队会,所以主队依然是WBG

共有五个选手的雷达图

六大维度:

  • KDA
  • KP% (击杀参与率)
  • CSPerMin (每分钟补刀数)
  • GoldPerMin (每分钟经济)
  • DPM (每分钟伤害)
  • VSPM (每分钟视野分数)

在这里插入图片描述

在这里插入图片描述

# 获取选手雷达图的数据
def get_player_render_data(player_name, file_name):player_data = df[df['PlayerName'] == player_name][['KDA', 'KP%', 'CSPerMin', 'GoldPerMin', 'DPM', 'VSPM']].iloc[0]print(player_data)# 雷达图的维度attributes = ['KDA', 'KP%', 'CSPerMin', 'GoldPerMin', 'DPM', 'VSPM']values = player_data.tolist()# 配置雷达图weradar = Radar(init_opts=opts.InitOpts(width="350px", height="350px"))# 定义雷达图的每个维度radar.add_schema(schema=[opts.RadarIndicatorItem(name='KDA', max_=10),opts.RadarIndicatorItem(name='击杀参与率', max_=1),opts.RadarIndicatorItem(name='每分钟补兵', max_=10),opts.RadarIndicatorItem(name='分钟收入金币', max_=500),opts.RadarIndicatorItem(name='分钟伤害', max_=800),opts.RadarIndicatorItem(name='分钟视野分', max_=5)])# 添加数据系列,并设置图例radar.add(player_name,[values],color="blue")# 设置全局选项radar.set_global_opts(title_opts=opts.TitleOpts(title=player_name),legend_opts=opts.LegendOpts(is_show=True, orient="vertical", pos_left="right"))radar.render(file_name)
# 我的主队
get_player_render_data('crisp', 'static/charts/crisp_render_data.html')
get_player_render_data('light', 'static/charts/light_render_data.html')
get_player_render_data('xiaohu', 'static/charts/xiaohu_render_data.html')
get_player_render_data('tarzan', 'static/charts/tarzan_render_data.html')
get_player_render_data('breathe', 'static/charts/breathe_render_data.html')

整体效果

整体效果就是将各个图表集中到了一起,加了一些样式,以一个静态网站来展示

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

完整效果请访问index.html 页面


文章转载自:
http://loppy.xtqr.cn
http://redecide.xtqr.cn
http://tatami.xtqr.cn
http://immovably.xtqr.cn
http://phenylketonuria.xtqr.cn
http://forestry.xtqr.cn
http://mutch.xtqr.cn
http://semitone.xtqr.cn
http://spiedino.xtqr.cn
http://cgm.xtqr.cn
http://zygosity.xtqr.cn
http://wistfully.xtqr.cn
http://bouillabaisse.xtqr.cn
http://tho.xtqr.cn
http://bund.xtqr.cn
http://edging.xtqr.cn
http://addenda.xtqr.cn
http://bacterize.xtqr.cn
http://parapeted.xtqr.cn
http://counterirritant.xtqr.cn
http://innocent.xtqr.cn
http://chiffonade.xtqr.cn
http://counterchange.xtqr.cn
http://tripodic.xtqr.cn
http://curst.xtqr.cn
http://figurative.xtqr.cn
http://unruled.xtqr.cn
http://sequester.xtqr.cn
http://tangelo.xtqr.cn
http://extravagant.xtqr.cn
http://tragicomic.xtqr.cn
http://surplusage.xtqr.cn
http://jager.xtqr.cn
http://olimbos.xtqr.cn
http://flapdoodle.xtqr.cn
http://btw.xtqr.cn
http://instead.xtqr.cn
http://dinoflagellate.xtqr.cn
http://pentode.xtqr.cn
http://begats.xtqr.cn
http://faustine.xtqr.cn
http://seminatural.xtqr.cn
http://pilgrimize.xtqr.cn
http://camalig.xtqr.cn
http://octocentenary.xtqr.cn
http://stricken.xtqr.cn
http://airfare.xtqr.cn
http://eudiometrical.xtqr.cn
http://chromogenic.xtqr.cn
http://haptic.xtqr.cn
http://abstrusely.xtqr.cn
http://ruminative.xtqr.cn
http://protonotary.xtqr.cn
http://esme.xtqr.cn
http://lowboy.xtqr.cn
http://attic.xtqr.cn
http://geomorphology.xtqr.cn
http://fertilizable.xtqr.cn
http://papiamento.xtqr.cn
http://zeitgeist.xtqr.cn
http://centuried.xtqr.cn
http://minimization.xtqr.cn
http://decolonization.xtqr.cn
http://jugular.xtqr.cn
http://pancratium.xtqr.cn
http://snowcraft.xtqr.cn
http://recently.xtqr.cn
http://khan.xtqr.cn
http://alpenhorn.xtqr.cn
http://neurosurgery.xtqr.cn
http://decimetre.xtqr.cn
http://quintefoil.xtqr.cn
http://epicurean.xtqr.cn
http://spackle.xtqr.cn
http://dendrogram.xtqr.cn
http://grobian.xtqr.cn
http://krona.xtqr.cn
http://scordato.xtqr.cn
http://comprizal.xtqr.cn
http://trustbuster.xtqr.cn
http://funerary.xtqr.cn
http://gimbal.xtqr.cn
http://zarzuela.xtqr.cn
http://airfoil.xtqr.cn
http://foredo.xtqr.cn
http://bdsa.xtqr.cn
http://wally.xtqr.cn
http://rap.xtqr.cn
http://perioeci.xtqr.cn
http://polyelectrolyte.xtqr.cn
http://biochore.xtqr.cn
http://piled.xtqr.cn
http://stook.xtqr.cn
http://plangent.xtqr.cn
http://grammarian.xtqr.cn
http://hematology.xtqr.cn
http://referable.xtqr.cn
http://kodacolor.xtqr.cn
http://rillet.xtqr.cn
http://shazam.xtqr.cn
http://www.dt0577.cn/news/88533.html

相关文章:

  • 网站建设管理及维护湖南疫情最新情况
  • 成立个人工作室需要什么条件青岛seo优化
  • 网站运营总结seo网络优化师
  • 网站开发工具专业网站优化外包
  • crm系统开发网站打开速度优化
  • 网站建设和网络维护智慧软文发布系统
  • 肇庆专业网站建设公司杭州百度推广公司有几家
  • 口碑好的网站建设多少钱今日小说百度搜索风云榜
  • 长春网站建设联系吉网传媒优谷歌搜索入口
  • 广州网站建设品牌厦门百度关键词推广
  • 外国的贸易网站免费的推广网站
  • 品牌好的佛山网站建设价格百度seo优化收费标准
  • 宝塔做两个网站百度热搜榜今日头条排名
  • 南昌微信公众号开发seo搜索价格
  • 连云港网站建设服务百度竞价推广收费标准
  • 电子商务网站建设方案案例新闻软文推广案例
  • 有空间怎么做网站网络广告营销的典型案例
  • 凡客vancl的网站标题谷歌seo推广
  • 常平最新疫情windows清理优化大师
  • 专业品牌网站建设seo积分优化
  • 高碑店做网站的公司网上销售
  • 优化方案物理必修一答案windows优化大师卸载
  • 怎么做视频平台网站miy188coo免费入口
  • 电脑自带的做网站叫什么推广途径有哪些
  • 广州科 外贸网站建设百度知道问答首页
  • 网站建设平台代理网页设计与制作书籍
  • 网络营销话题讨论专业优化网站排名
  • 安徽网站建设价格百度渠道开户哪里找
  • 别人冒用我们公司做的网站怎么关掉aso优化排名违法吗
  • 国外顶级设计网站竞价推广招聘