python-pyecharts基础知识

资料来源: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

猜你喜欢

转载自blog.csdn.net/qq_47541315/article/details/127146395