黑马程序员python教程,8天python从入门到精通,学python看这套就
LJL心中月
编辑于 2023年02月08日 17:36

第105节,你们的地图也是这样子的吗?

from pyecharts.charts import Map

from pyecharts.options import VisualMapOpts

# 数据对象创建

map = Map()

# 数据准备

data =[

("北京市",99),

("上海市",199),

("广动省",399),

("江苏省",699),

("山东省",999)

]

# 数据添加

map.add("地图",data,"china",)

# 设置全局的数据

map.set_global_opts(

visualmap_opts=VisualMapOpts(

is_show=True,

is_piecewise=True,

# 数据范围校准

pieces=[

{"min":1 ,"max": 9,"label":"1-9人", "color":"#CCFFFF"},

{"min":10 ,"max": 99,"label":"10-99人", "color":"#FFFF99"},

{"min":100 ,"max":499 ,"label":"100-499人", "color":"#FF9966"},

{"min":500 ,"max": 999,"label":"500-999人", "color":"#FF6666"},

{"min":1000 ,"max": 9999,"label":"1000-9999人", "color":"#CC3333"},

{"min":10000,"label":"10000以上", "color":"#990033"}

])

)

# 数据生成

map.render()

#

P106 数据补充,最笨的方法

import json

from pyecharts.charts import Map

from pyecharts.options import LabelOpts

from pyecharts.options import *

from pyecharts import options as opts

fc = open("D:/疫情.txt",'r',encoding='UTF-8')

fc_data = fc.read()

fc_json = json.loads(fc_data)

fc_province_list = fc_json["areaTree"][0]["children"]

# 接收需要的数据

data_list = []

# 循环获取需要的数据

for province_list in fc_province_list :

province_name = province_list["name"]

if province_name == "新疆":

province_name = province_name+"维吾尔自治区"

elif province_name == "西藏":

province_name = province_name + "自治区"

elif province_name == "广西":

province_name = province_name + "壮族自治区"

elif province_name == "重庆" or province_name == "北京" or province_name == "天津":

province_name = province_name + "市"

elif province_name == "内蒙古" :

province_name = province_name + "自治区"

elif province_name == "宁夏":

province_name = province_name + "回族自治区"

elif province_name == "香港" or province_name == "澳门":

province_name = province_name + "特别行政区"

else:

province_name = province_name + "省"

province_confirm = province_list["total"]["confirm"]

data_list.append((province_name,province_confirm))

map = Map()

map.add("个省份确诊人数",data_list,"china")

#全局选项

map.set_global_opts(

title_opts=TitleOpts("全国疫情地图"),

visualmap_opts=VisualMapOpts(

is_show=True,

is_piecewise=True,

pieces=[

{"min": 1, "max": 9, "label": "1-9人", "color": "#CCFFFF"},

{"min": 10, "max": 99, "label": "10-99人", "color": "#FFFF99"},

{"min": 100, "max": 499, "label": "100-499人", "color": "#FF9966"},

{"min": 500, "max": 999, "label": "500-999人", "color": "#FF6666"},

{"min": 1000, "max": 9999, "label": "1000-9999人", "color": "#CC3333"},

{"min": 10000, "label": "10000以上", "color": "#990033"}

]

)

)

map.render()

fc.close()

from pyecharts.charts import Bar

from pyecharts.options import *

from pyecharts.charts import Timeline

from pyecharts.globals import ThemeType

# 文件读取

f = open("D:/1960-2019全球GDP数据.csv",'r',encoding="GB2312")

# 读取所有行,并接收

data_lines = f.readlines()

# 关闭文件

f.close()

# 删除第一条数据

data_lines.pop(0)

# 数据获取

data_dict = {}

# 获取每行的数据

for lines in data_lines:

year = int(lines.split(",")[0])

country = lines.split(",")[1]

gdp = float(lines.split(",")[2])

try:

data_dict[year].append([country,gdp])

except KeyError:

data_dict[year] = []

data_dict[year].append([country,gdp])

# print(data_dict)

# 排序年份

sort_list_year = sorted(data_dict.keys())

# 创建时间线对象

timeLine = Timeline({"theme":ThemeType.LIGHT})

# 循环获取国家数据

for year in sort_list_year:

# 取出前8的国家

data_dict[year].sort(key=lambda element:element[1],reverse=True)

year_date = data_dict[year][0:8]

# 构建柱状图

x_data =[]

y_data =[]

for country_gdp in year_date:

x_data.append(country_gdp[0])

y_data.append(country_gdp[1]/100000000)

# 构建柱状图

bar = Bar()

# 数据反转

x_data.reverse()

y_data.reverse()

bar.add_xaxis(x_data)

bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))

# 反转 x,y

bar.reversal_axis()

# 设置每一年的标题

bar.set_global_opts(

title_opts=TitleOpts(title=f"{year}年全球前8GDP数据")

)

timeLine.add(bar,str(year))

timeLine.add_schema(

play_interval=500,

is_timeline_show=True,

is_auto_play=True,

is_loop_play=False

)

timeLine.render("1960-2014年全球GDP数据.html")