2022北京冬奥会可视化

news/2024/11/25 4:24:14/

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、数据集
  • 二、Pycharm


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、数据集

1.下载数据集:网址点关注私发
2.转为csv文件保存到本地
3.navicat 连接到MySQL数据库
4.打开nacvicat,选择sys,点击导入向导,将转好的csv文件导入数据库,将表命名为peiking
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择编码20906(GB2312)
5.添加字段名:National(国家),NationalEnglish(国家英文),Winner(获奖选手), LargeProject(大项项目),SmallProject(小项项目),MedalType(奖牌类型),AwardTime(获奖日期)
在这里插入图片描述

二、Pycharm

1.打开Pycharm(注意社区版的不行哦),点击右侧的数据库
在这里插入图片描述
2.添加数据源选择MySQL

在这里插入图片描述
3.输入端口等信息,测试连接后确定
在这里插入图片描述
4.新建一个test.py测试数据库连接
在这里插入图片描述

import pymysql
db = pymysql.conner(host='127.0.0.1', user='root', password = '123456', database ='sys')
print(db)

5.在文件->设置->项目->Python编辑器左下角的+号导入需要的库:numpy,pandas,pyecharts,pymysql
在这里插入图片描述
6.点击peiking选择跳到查询数据台
在这里插入图片描述

use sys;#打开sys数据库
SELECT National as 国家, COUNT(*) as 次数 FROM peiking GROUP BY National 

在这里插入图片描述
7.

mport pandas as pd
import numpy as np
import pymysql
from pyecharts import options as opts
from pyecharts.charts import Map, Page, Grid, Bar, Piedb = pymysql.connect(host='127.0.0.1', user='root', password='123456',database='sys')
cursor = db.cursor() #创建游标
sql = "SELECT NationalEnglish as 国家,COUNT(*) as 奖牌总数 FROM sys.peiking GROUP BY NationalEnglish"
cursor.execute(sql) #游标执行sql语句
results = np.array(cursor.fetchall()) 将游标经过的结果获取到np数组中
print(results)#打印结果

注意:必须得用国家英文,不然在用Map的时候不显示
在这里插入图片描述

def map_one() -> Map:world = (Map(init_opts=opts.InitOpts(bg_color="#00589F", chart_id="c8f99c89c25d4e6a803bf283bad2a7ed")).add('', results, 'world', is_roam=True)  # 地图类型.set_global_opts(title_opts=opts.TitleOpts(title='Medal top'),visualmap_opts=opts.VisualMapOpts(max_=40,min_=0,is_piecewise=True)  # 定义图例为分段型,默认为连续的图例).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))return worldworld = map_one()
world.render('各国奖牌榜.html')

在这里插入图片描述
8.在控制台执行sql语句

 SELECT Winner as 选手,COUNT(*) as 次数 FROM peiking GROUP BY Winner

在这里插入图片描述
查询各获奖选手的获奖次数,保存为winner sheet
在这里插入图片描述

sql2 = "select * from sys.`winner sheet` order by 次数 desc" #从winner sheet中按获奖次数多少进行从大到小排序
cursor2 = db.cursor()
cursor2.execute(sql2)
data1 = np.array(cursor2.fetchall())print(data1[:9, ])#取前十位的数据

在这里插入图片描述

def grid_three() -> Grid:bar2 = (Bar(init_opts=opts.InitOpts(bg_color="#00589F", chart_id="f23147132e1e4aaeae77c06524280e19")).add_xaxis([str(x) for x in data1[:1, 0]]).add_yaxis('奖牌数', [str(x) for x in data1[:1, 1]], stack=0, gap='0%').reversal_axis().set_global_opts(title_opts=opts.TitleOpts(title='个人榜'),xaxis_opts=opts.AxisOpts(name='数量(个)',min_=1,max_=5),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))return bar2bar2 = grid_three()
bar2.render("个人榜.html")

在这里插入图片描述

def grid_two() -> Grid:bar1 = (Bar(init_opts=opts.InitOpts(bg_color="#00589F", chart_id="dbfe18e7a10d4739940b7f3c2e583300")).add_xaxis([str(x) for x in data2[:, 0]]).add_yaxis('金牌数', [str(x) for x in data2[:, 1]], stack=0, gap='0%').set_global_opts(title_opts=opts.TitleOpts(title='金牌数'),xaxis_opts=opts.AxisOpts(name='数量(个)',name_gap=30,axislabel_opts={'rotate': 45},),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))return bar1bar1 = grid_two()
bar1.render("金牌数.html")

在这里插入图片描述

def grid_one() -> Grid:bar1 = (Bar(init_opts=opts.InitOpts(bg_color="#00589F", chart_id="fd91b77a860f429c8877f154593c15e2")).add_xaxis([str(x) for x in results[:, 0]]).add_yaxis('奖牌数', [str(x) for x in results[:, 1]]).set_global_opts(title_opts=opts.TitleOpts(title='奖牌数'),xaxis_opts=opts.AxisOpts(name='数量(个)',name_gap=30,axislabel_opts={'rotate': 45},),).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))return bar1bar1 = grid_one()
bar1.render("奖牌数.html")

在这里插入图片描述

sql1 = "SELECT LargeProjects as 项目,COUNT(*) as 次数 FROM sys.peiking GROUP BY LargeProjects"
cursor1 = db.cursor()
cursor1.execute(sql1)
data = np.array(cursor1.fetchall())
print(data)
def pie_one() -> Pie:rou = (Pie(init_opts=opts.InitOpts(bg_color="#00589F", chart_id="24b49ca8304f49c8bd2fdefb031f7663")).add('', [list(z) for z in zip(data[:, 0], data[:, 1])]).set_global_opts(title_opts=opts.TitleOpts("各项目一览"),legend_opts=opts.LegendOpts(is_show=False)).set_series_opts(label_opts=opts.LabelOpts(is_show=False)))return rourou = pie_one()
rou.render("各项目一览.html")

在这里插入图片描述

def main_title() -> Pie:c = (Pie(init_opts=opts.InitOpts(bg_color='#00589F')).set_global_opts(title_opts=opts.TitleOpts(title="冬奥会可视化平台",title_textstyle_opts=opts.TextStyleOpts(font_size=36,color='#FFFFFF'),pos_left='center', pos_top='middle')))//pos_top :图例组件离容器上侧的距离return cc = main_title()
c.render("冬奥可视化平台.html")

在这里插入图片描述

page = Page(layout=Page.DraggablePageLayout, page_title="大屏展示")page.add(main_title(), map_one(), grid_base(), pie_one(), grid_one(), )page.render("图表.html")

最后用Page将多个画布渲染到同一页面

将画布拖拽到合适位置,并点击 Save Config 会生成一个chart_config.json文件,将其下载并放到项目目录下。这个json文件保留着之前拖拽之后页面的数据,
添加:Page.save_resize_html(“图表.html”, cfg_file=“chart_config.json”, dest=“test.html”)
并将page.render(“图表.html”)注释掉
重新根据chart_config.json渲染
在这里插入图片描述
要源码找我



http://www.ppmy.cn/news/722729.html

相关文章

2022北京冬奥会开幕式里的黑科技,闪耀闪耀全世界

没有2008年北京奥运会的人山人海,简洁、时尚,满满的高级感! 比2008北京奥运开幕式还精彩! 这是科技的进步,祖国的强大! 更是中国人在新时代里的文化自信! 2022年北京冬奥会开幕式里的黑科技让中…

c语言奥运会志愿者报名系统,北京冬奥会和冬残奥会志愿者全球招募启动!

12月5日,在第34个国际志愿者日,北京冬奥组委面向全球发布北京2022年冬奥会和冬残奥会赛会志愿者招募公告,赛会志愿者全球招募正式启动。 据悉,目前阶段,北京冬奥组委计划招募2.7万名冬奥会赛会志愿者,1.2万…

历届冬奥会举办地与举办时间

第1届法国夏蒙尼1924年 第2届瑞士圣莫里茨1928年 第3届美国普莱西德湖1932年 第4届德国加米施-帕滕基兴1936年 第5届瑞士圣莫里茨1948年 第6届挪威奥斯陆1952年 第7届意大利科蒂纳丹佩佐1956年 第8届美国斯阔谷1960年 第9届奥地利因斯布鲁克1964年 第10届法国格勒诺布尔1968年 …

历届冬奥会中国金牌得主一览

中国代表团自2002年盐湖城冬奥会实现金牌零的突破以来,已连续四届在冬奥会夺金,到2014年索契冬奥会已收获12枚金牌。王濛在两届冬奥会收获四金,是中国至今获得冬奥会金牌最多的运动员。 历届冬奥会中国金牌得主一览 1、2002年盐湖城冬奥会 短…

冬奥会

三个强劲对手全部跌倒,让本来是替补出场的李坚柔神奇夺冠。中国队也终于站在索契冬奥会上的最高领奖台上。而就在李坚柔夺冠后的不长时间,央视赶紧应景的将奖牌榜新鲜出炉。要知道在此之前,中国队可是位于奖牌榜后列。 李坚柔夺冠之后&#x…

人工智能助力北京冬奥会

在2022年北京冬奥会来临之际,为助推花样滑冰运动的普及与发展,北京智源人工智能研究院正式发布花样滑冰数据集Figure Skating Dataset (FSD-10),旨在解决目前视频研究数据集缺乏人体运动特性、深度视频学习模型正确率低等问题。数据集项目由大…

2022年结束了

在去年这个时候,我刚好也写了一篇这样的文章。 再往前是2020年的总结 年终了,肿一下 斗转星移,我的这个公众号也陪伴着我经过了4年的时间,明年后,我也正式进入35岁程序员的行列,随时会受到命运对我的锤炼。…

英特尔北京2022年冬奥会体验中心落成

2020年东京奥运会已圆满落幕,全社会进入到为北京2022年冬奥会紧锣密鼓筹备的倒计时模式。近日,“英特尔北京2022年冬奥会体验中心”在北京石景山区首钢园落成,并举办了媒体开放日活动。以体验中心为窗口,英特尔在近千平米的展厅中…