【Python可视化】pyecharts

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

需要安装

pip install pyecharts

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

全局配置项

折线图

python 复制代码
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()

地图

python 复制代码
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()

柱状图

python 复制代码
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排名前八国家的数据展现出来

代码示例:

python 复制代码
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

相关推荐
代码的乐趣14 分钟前
支持selenium的chrome driver更新到131.0.6778.204
chrome·python·selenium
好开心3315 分钟前
axios的使用
开发语言·前端·javascript·前端框架·html
又蓝38 分钟前
使用 Python 操作 Excel 表格
开发语言·python·excel
余~~185381628001 小时前
稳定的碰一碰发视频、碰一碰矩阵源码技术开发,支持OEM
开发语言·人工智能·python·音视频
0zxm1 小时前
06 - Django 视图view
网络·后端·python·django
Am心若依旧4091 小时前
[c++11(二)]Lambda表达式和Function包装器及bind函数
开发语言·c++
明月看潮生1 小时前
青少年编程与数学 02-004 Go语言Web编程 20课题、单元测试
开发语言·青少年编程·单元测试·编程与数学·goweb
大G哥2 小时前
java提高正则处理效率
java·开发语言
ROBOT玲玉2 小时前
Milvus 中,FieldSchema 的 dim 参数和索引参数中的 “nlist“ 的区别
python·机器学习·numpy
VBA63372 小时前
VBA技术资料MF243:利用第三方软件复制PDF数据到EXCEL
开发语言