Python_pyecharts入门_代码演示

目录

1.入门演示

2.演示可视化需求1:折线图开发

3.演示地图可视化基本使用

4.演示全国疫情可视化地图开发

5.演示柱状图的开发


1.入门演示

#导包
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
#创建一个折线图对象
line = Line()
#给折线图对象添加x轴的数据
line.add_xaxis(["中国","美国","日本"])
#给折线图对象添加y轴数据
line.add_yaxis("GDP",[30,20,10])
#设置全局配置
line.set_global_opts(
    title_opts = TitleOpts(title = "GDP展示", pos_left="center",pos_bottom="1%"),
    legend_opts = LegendOpts(is_show=True),
    toolbox_opts = ToolboxOpts(is_show=True),
    visualmap_opts = VisualMapOpts(is_show=True)
)

#通过render方法将代码生成图像
line.render()

2.演示可视化需求1:折线图开发

#演示可视化需求1:折线图开发

import json
from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LabelOpts
#处理数据
f_us = open("D:/desktop/美国.txt","r",encoding="UTF-8")
us_data = f_us.read()

f_jp = open("D:/desktop/日本.txt","r",encoding="UTF-8")
jp_data = f_jp.read()

f_in = open("D:/desktop/印度.txt","r",encoding="UTF-8")
in_data = f_in.read()
#去掉不符合JSON规范的开头
us_data = us_data.replace("jsonp_1629344292311_69436(","")

jp_data = jp_data.replace("jsonp_1629350871167_29498(","")

in_data = in_data.replace("jsonp_1629350745930_63180(","")
#去掉不符合JSO你规范的结尾
us_data = us_data[:-2]  #不使用replace的愿意在于会无法精准删除结尾

jp_data = jp_data[:-2]  #不使用replace的愿意在于会无法精准删除结尾

in_data = in_data[:-2]  #不使用replace的愿意在于会无法精准删除结尾
#JSON转Python字典
us_dict = json.loads(us_data)

jp_dict = json.loads(jp_data)

in_dict = json.loads(in_data)
# print(type(us_dict))
# print(us_dict)
#获取Trend Key
us_trend_data = us_dict['data'][0]['trend']

jp_trend_data = jp_dict['data'][0]['trend']

in_trend_data = in_dict['data'][0]['trend']
# print(type(trend_data))
# print(trend_data)
#获取日期数据,用于X轴,取2020年(314下标结束)
x_data_us = us_trend_data['updateDate'][:314]

x_data_jp = jp_trend_data['updateDate'][:314]

x_data_in = in_trend_data['updateDate'][:314]
# print(type(x_data))
# print(x_data)
#获取确诊数据,用于Y轴,取2020年(314下标结束)
y_data_us = us_trend_data['list'][0]['data'][:314]

y_data_jp = jp_trend_data['list'][0]['data'][:314]

y_data_in = in_trend_data['list'][0]['data'][:314]
# print(type(y_data))
# print(y_data)
#生成图表
line = Line()   #构建折线图对象
#添加X轴数据
line.add_xaxis(x_data_us)   #x轴是公用的,所以使用一个国家的数据即可
#添加Y轴数据
line.add_yaxis("美国确诊人数",y_data_us,label_opts=LabelOpts(is_show=False))

line.add_yaxis("日本确诊人数",y_data_jp,label_opts=LabelOpts(is_show=False))

line.add_yaxis("印度确诊人数",y_data_in,label_opts=LabelOpts(is_show=False))
#全局设置
line.set_global_opts(
    #标题设置
    title_opts = TitleOpts(title = "2020年美日印三国确诊人数对比折线图",pos_left="center",pos_bottom="1%")
)
#调用render方法生成图表
line.render()
#关闭文件
f_us.close()
f_jp.close()
f_in.close()

3.演示地图可视化基本使用

演示地图可视化的基本使用

from pyecharts.charts import Map
from pyecharts.options import  VisualMapOpts
#准备地图对象
map = Map()
#准备数据
data = [
    ("北京市",99),
    ("上海市",199),
    ("湖南省",299),
    ("台湾省",399),
    ("广东省",499),
]
#添加数据
map.add("测试地图",data,"china")
#绘图
map.render()
#设置全局选项
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
    )
)

4.演示全国疫情可视化地图开发

import json
from pyecharts.charts import Map
from pyecharts.options import *
#读取数据文件
f = open("D:/desktop/疫情.txt","r",encoding="UTF-8")
data = f.read()
#关闭文件
f.close()
#将字符串JSON数据转换为python字典
data_dict = json.loads(data)

province_data_list = data_dict["areaTree"][0]["children"]
#组装每个省份和确诊人数为元组,并各个省的数据都封装进列表中
data_list = []
for province_data in province_data_list:
    province_name = province_data["name"] + "省"
    province_confirm = province_data["total"]["confirm"]
    data_list.append((province_name,province_confirm))
print(data_list)
#创建地图对象
map = Map()
#添加数据
map.add("各省份确诊人数",data_list,"china")
#设置全局配置,定制分段的视觉映射
map.set_global_opts(
    title_opts = TitleOpts(title = "全国疫情地图"),
    visualmap_opts = VisualMapOpts(
        is_show = True, #是否显示
        is_piecewise = True,    #是否分段
        pieces=[
            {"min":1 , "max" :99,"label":"1-99人","color":"#ccfffff"},
            {"min":100 , "max" :999,"label":"100-999人","color":"#ffff99"},
            {"min":1000 , "max" :4999,"label":"1000-4999人","color":"#ff9966"},
            {"min":5000 , "max" :9999,"label":"5000-9999人","color":"#ff6666"},
            {"min":10000 , "max" :99999,"label":"10000-99999人","color":"#cc3333"},
            {"min":100000 ,"label":"100000以上","color":"#990033"}
        ]   #分段映射
    )
)
#绘图
map.render("全国疫情地图.html")

5.演示柱状图的开发

from pyecharts.charts import Bar,Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType
#适应Bar构建基础柱状图
bar1 = Bar()
bar1.add_xaxis(["中国","美国","英国"])
bar1.add_yaxis("GDP",[30,20,10],label_opts=LabelOpts(position="right"))
bar1.reversal_axis()

bar2 = Bar()
bar2.add_xaxis(["中国","美国","英国"])
bar2.add_yaxis("GDP",[50,30,20],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()

bar3 = Bar()
bar3.add_xaxis(["中国","美国","英国"])
bar3.add_yaxis("GDP",[70,40,30],label_opts=LabelOpts(position="right"))
bar3.reversal_axis()
#设置时间线的主题
timeline = Timeline(
    {"theme":ThemeType.LIGHT}
)

timeline.add(bar1,"点1")
timeline.add(bar2,"点2")
timeline.add(bar3,"点3")

#自动播放
timeline.add_schema(
    play_interval=1000, #自动播放的时间,单位毫秒
    is_timeline_show=True,  #是否在自动播放的时候,显示时间线
    is_auto_play=True,  #是否自动播放
    is_loop_play=True   #是否循环自动播放
)

#绘图用时间线对象绘图,而不用Bar对象绘图

timeline.render("基础时间线柱状图.html")


拓展列表的sort用法
在学习了将函数作为参数传递后,我们可以学习列表的sort方法对列表进行自定义排序

#准备列表
my_list = [["a",33],["b",55],["c",11]]

#排序,基于带名函数
# def choose_sort_key(element):
#     return element[1]
#
# my_list.sort(key=choose_sort_key,reverse=True)
# print(my_list)
#排序,基于Lambda函数
my_list.sort(key=lambda element:element[1],reverse=True)
print(my_list)

#演示第三个图表:GDP动态柱状图开发
from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
#读取数据
f = open("D:/desktop/1960-2019全球GDP数据.csv","r",encoding="GB2312")
data_lines = f.readlines()
#关闭文件
f.close()
#删除第一条数据
data_lines.pop(0)
#将数据转换为字典,格式为:
#{年份:[[国家,gdp],[国家,gdp],[国家,gdp]],年份:[[国家,gdp],[国家,gdp],[国家,gdp]],}
#先定义一个字典对象
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2]) #因为数据中有部分科学计数法的数据,所以用float
    #如何判断字典里面有没有指定的key呢?
    try:
        data_dict[year].append([country,gdp])
    except KeyError:
        data_dict[year] = []
        data_dict[year].append([country,gdp])

print(data_dict)

#创建时间线对象
timeline = Timeline({"theme":ThemeType.LIGHT})

#排序年份
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element:element[1],reverse=True)
    #取出本年份前8的国家
    year_data = data_dict[year][0:8]
    x_data = []
    y_data = []

    for country_gdp in year_data:
        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))
#for循环每一年的数据,基于每一年的数据,创建每一年的bar对象
#在for中,将每一年的Bar对象添加到时间线上

#设置时间线自动播放
timeline.add_schema(
    play_interval=1000,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)
#绘图
timeline.render("1960-2019全球GDP数据.html")

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hooray11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值