资料来源:2022新版黑马程序员python教程,8天python从入门到精通,学python看这套就够了_哔哩哔哩_bilibili
折线图
地图
动态GDP增长图
补充知识:
json
1)JSON是一种轻量级的数据交互格式。可以按照JSON指定的格式去组织和封装数据
2)JSON本质上是一个带有特定格式的字符串
主要功能:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互.
json格式
json格式的数据要求很严格, 下面案例:
Python数据和Json数据的相互转化
pyecharts模块
概况 : Echarts 是个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可. 而 Python 是门富有表达力的语言,很适合用于数据处理. 当数据分析遇上数据可视化时pyecharts 诞生了.
pyecharts模块安装
pip install pyecharts -i https://pypi.tuna.tsinghua.edu.cn/simple #清华源
基础折线图
pyecharts有哪些配置选项
pyecharts模块中有很多的配置选项, 常用到2个类别的选项: 全局配置选项 系列配置选项
set_global_opts方法
这里全局配置选项可以通过set_global_opts方法来进行配置, 相应的选项和选项的功能如下:
对应代码块:
在对set_global_opts()操作时需要导入模块
折线图相关配置项
创建折线图
.add_yaxis相关配置选项:
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, LegendOpts, ToolboxOpts, VisualMapOpts
line = Line()
line.add_xaxis(["中国", "美国", "英国"])
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")
)
line.render()
练习题:
绘制美日印的疫情变换折线图
相关资料下载:链接:https://pan.baidu.com/s/1FHOAivxPafjsRFYIeNQbsg?pwd=t2og
提取码:t2og
from pyecharts.charts import Line
from pyecharts.options import TitleOpts, ToolboxOpts, LabelOpts
import json
f_us = open("美国.txt", "r", encoding="UTF-8")
us_data = f_us.read()
f_jp = open("日本.txt", "r", encoding="UTF-8")
jp_data = f_jp.read()
f_in = open("印度.txt", "r", encoding="UTF-8")
in_data = f_in.read()
us_data = us_data.replace("jsonp_1629344292311_69436(", "")
us_data = us_data[:-2]
jp_data = jp_data.replace("jsonp_1629350871167_29498(", "")
jp_data = jp_data[:-2]
in_data = in_data.replace("jsonp_1629350745930_63180(", "")
in_data = in_data[:-2]
us_dict = json.loads(us_data)
jp_dict = json.loads(jp_data)
in_dict = json.loads(in_data)
us_trend_data = us_dict["data"][0]["trend"]
us_x_data = us_trend_data["updateDate"][:314]
us_y_data = us_trend_data['list'][0]['data'][:314]
jp_trend_data = jp_dict["data"][0]["trend"]
jp_x_data = jp_trend_data["updateDate"][:314]
jp_y_data = jp_trend_data['list'][0]['data'][:314]
in_trend_data = in_dict["data"][0]["trend"]
in_x_data = in_trend_data["updateDate"][:314]
in_y_data = in_trend_data['list'][0]['data'][:314]
line = Line()
line.add_xaxis(us_x_data)
line.add_yaxis("美国确诊数据", us_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("日本确诊数据", jp_y_data, label_opts=LabelOpts(is_show=False))
line.add_yaxis("印度确诊数据", in_y_data, label_opts=LabelOpts(is_show=False))
line.set_global_opts(
title_opts=TitleOpts(title="2020年美日印确诊人数对比折线图", pos_left="center", pos_bottom="1%"),
toolbox_opts=ToolboxOpts(is_show=True)
)
line.render()
f_us.close()
f_jp.close()
f_in.close()
基础地图演示
基础地图演示 - 视觉映射器
设置全局配置选项
案例一:
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
map = Map()
data = [
("北京", 99),
("上海", 199),
("湖南", 989),
("江西", 995),
("四川", 98)
]
map.set_global_opts(
visualmap_opts=VisualMapOpts(is_show=True)
)
map.add("测试地图", data, "china")
map.render()
案例二:
import json
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
f = open("疫情.txt", "r", encoding="UTF-8")
data = f.read()
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))
map = Map()
map.add("各省确诊人数", data_list, "china")
map.set_global_opts(
visualmap_opts=VisualMapOpts(is_show=True)
)
map.render()
f.close()
案例三:
import json
from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
f = open("疫情.txt", "r", encoding="UTF-8")
data = f.read()
data_dict = json.loads(data)
cities_data = data_dict["areaTree"][0]["children"][3]["children"]
data_list = []
for city_data in cities_data:
city_name = city_data["name"] + "市"
city_confirm = city_data["total"]["confirm"]
data_list.append((city_name, city_confirm))
map = Map()
map.add("河南疫情情况", data_list, "河南")
map.set_global_opts(
visualmap_opts=VisualMapOpts(is_show=True)
)
map.render()
f.close()
通过Bar构建基础柱状图
反转x和y轴
数值标签在右侧
创建时间线
Timeline()-时间线
如果说一个Bar、Line对象是一张图表的话,时间线就是创建一个 一维的x轴,轴上每一个点就是一个图表对象.
设置自动播放
rom pyecharts.charts import Bar, Timeline
from pyecharts.options import LabelOpts
from pyecharts.globals import ThemeType
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, 30], label_opts=LabelOpts(position="right"))
bar2.reversal_axis()
bar3 = Bar()
bar3.add_xaxis(["中国", "美国", "英国"])
bar3.add_yaxis("GDP", [80, 50, 60], 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
)
timeline.render()
效果:
Awesome-pyecharts
案例二:
from pyecharts.charts import Bar, Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType
f = open("1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data = f.readlines()
data.pop(0)
data_dict = dict()
T = Timeline({"theme": ThemeType.LIGHT})
for data_line in data:
year = int(data_line.split(",")[0])
country = data_line.split(",")[1]
gdp = float(data_line.split(",")[2])
try:
data_dict[year].append([country, gdp])
except KeyError:
data_dict[year] = []
data_dict[year].append([country, gdp])
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:
data_dict[year].sort(key=lambda element: element[1], reverse=True)
year_data = data_dict[year][0:8]
x_data = []
y_data = []
for f_data in year_data:
x_data.append(f_data[0])
y_data.append(f_data[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"))
bar.reversal_axis()
bar.set_global_opts(
title_opts=TitleOpts(title=f"{year}年GDP情况")
)
T.add(bar, str(year))
T.add_schema(
play_interval=1000,
is_auto_play=True,
is_timeline_show=True,
is_loop_play=False
)
T.render("1960-2019全球GDP前8国家.html")
效果:
Awesome-pyecharts