【Python可视化】pyecharts

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

需要安装

pip install pyecharts

下面介绍几种用法,更多用法访问pyecharts使用文档

全局配置项

全局设置

折线图

from pyecharts.charts import Line
from pyecharts.options import TitleOpts,LegendOpts,ToolboxOpts,VisualMapOpts
line = Line()
line.add_xaxis(["test1","test2","test3"])
line.add_yaxis("score",[90,85,96])
line.set_global_opts(
    title_opts=TitleOpts(title="三次测试成绩",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()

地图

from pyecharts.charts import Map
from pyecharts.options import VisualMapOpts
map = Map()
data = [
    ("北京市",95),
    ("天津市",89),
    ("上海市",87),
    ("山西省",50),
    ("山东省",45),
    ("河南省",41),
    ("河北省",40),
    ("江苏省",62),
    ("广东省",70)
]
map.add("测试地图",data,"china")
map.set_global_opts(
    visualmap_opts=VisualMapOpts(
        is_show=True,
        is_piecewise=True,
        pieces=[
            {"min":1,"max":50,"label":"1-50","color":"#CCFFFF"},
            {"min":51,"max":80,"label":"51-80","color":"#FF6666"},
            {"min":81,"max":100,"label":"81-100","color":"#990033"}
        ]
    )
)
map.render()

柱状图

from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
from pyecharts.globals import ThemeType

bar1 = Bar()
bar1.add_xaxis(["test1","test2","test3"])
bar1.add_yaxis("score",[90,85,96],label_opts=LabelOpts(position="right"))
bar1.reversal_axis() #反转x轴y轴

bar2 = Bar()
bar2.add_xaxis(["test1","test2","test3"])
bar2.add_yaxis("score",[88,90,85],label_opts=LabelOpts(position="right"))
bar2.reversal_axis()

bar3 = Bar()
bar3.add_xaxis(["test1","test2","test3"])
bar3.add_yaxis("score",[66,77,88],label_opts=LabelOpts(position="right"))
bar3.reversal_axis()

#时间线设置
timeline = Timeline({"theme":ThemeType.LIGHT}) #设置主题颜色
timeline.add(bar1,"高一")
timeline.add(bar2,"高二")
timeline.add(bar3,"高三")
#播放设置
timeline.add_schema(
    play_interval=1500, #播放间隔(ms)
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=True
)

timeline.render("Mike高中三年的成绩.html")

项目-动态GDP柱状图

数据来源:Data_1960-2019GDP.csv(本文开头处提供下载)

实现要求:将每一年GDP排名前八国家的数据展现出来

代码示例:

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_lines = f.readlines()
f.close()
#删除第一行数据
data_lines.pop(0)
#将数据转换为字典存储
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0])
    country = line.split(",")[1]
    gdp = float(line.split(",")[2])
    try:
        data_dict[year].append([country, gdp])
    except:
        data_dict[year] = []
        data_dict[year].append([country, gdp])

timeline = Timeline({"theme":ThemeType.ROMANTIC})
#排序年份
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循环每一年的数据,基于每一年的数据,创建每一年的bar对象并将其添加到时间线中
    for country_gdp in year_data:
        x_data.append(country_gdp[0])#x轴添加国家
        y_data.append(country_gdp[1])#y轴添加gdp数据

    #构建柱状图
    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排名前八国家数据")
    )
    timeline.add(bar,str(year))
    timeline.add_schema(
        play_interval=1000,
        is_timeline_show=True,
        is_auto_play=True,
        is_loop_play=False
    )
timeline.render("1960-2019全球GDP排名前八国家数据.html")

学习更多图形样式展示,可以访问pyecharts-gallery

上一篇:手写一个uart协议——rs232


下一篇:动态规划——最短编辑距离