【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

相关推荐
apocelipes10 小时前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
用户83562907805112 小时前
使用 Python 在 PDF 中创建与管理书签
后端·python
MeixianAgent16 小时前
Python 回测数据入口怎么验?历史 K 线入库前先做 5 个检查
后端·python
咕白m62520 小时前
用 Python 实现一键批量查找与替换 Excel 数据
后端·python
SelectDB2 天前
Apache Doris Python UDF:让 SQL 直接调用 Python 生态,支撑 Agent 时代复杂业务逻辑
大数据·数据库·python
荣码2 天前
GraphRAG:普通RAG只能回答"点"的问题,我踩了4个坑才搞懂
java·python
金銀銅鐵2 天前
[Python] 基于欧几里得算法,实现分数约分计算器
python·数学
Lyn_Li2 天前
Kaggle Top 5 | 198只股票、200条数据的金融预测——BattleFin高分方案从零复现
python·kaggle·比赛复盘·金融预测
小九九的爸爸3 天前
前端想要入门Agent开发,要具备哪些Python基础?
python·agent·ai编程
阿耶同学3 天前
手把手教你用 LangGraph 搭建三层嵌套 Agent 架构
python·程序员