Python3入门指南Python语言的特点和实际应用Python3环境搭建配置VSCode进行Python开发Python基础语法Python变量与数据类型Python数据类型转换Python解释器使用Python注释使用Python运算符Python数字类型Python字符串操作Python列表操作Python元组使用Python字典使用Python集合使用Python条件控制详解Python循环语句详解Python编程入门实践Python推导式详解Python迭代器和生成器Python with语句详解Python函数详解Python lambda(匿名函数)Python装饰器Python数据结构Python模块和包使用Python中__name__和__main__的用法Python输入输出:从基础到文件操作Python文件操作Python OS模块使用Python错误和异常处理Python面向对象编程Python命名空间和作用域Python虚拟环境:venv详细教程Python类型注解Python标准库常用模块Python正则表达式Python CGI编程Python MySQL(mysql-connector驱动)Python MySQL(PyMySQL驱动)Python网络编程Python发送邮件Python多线程编程Python XML解析Python JSON解析Python日期和时间处理Python操作MongoDBPython urllib库使用Python uWSGI 安装与配置Python pip包管理工具Python operator模块Python math模块Python requests模块HTTP请求Python random模块Python OpenAI库Python AI绘画制作Python statistics模块Python hashlib模块:哈希加密Python量化交易Python pyecharts数据可视化Python Selenium网页自动化Python BeautifulSoup网页数据提取Python Scrapy爬虫框架Python Markdown转HTMLPython sys模块Python Pickle模块:数据存储Python subprocess模块Python queue队列模块Python StringIO内存文件操作Python logging日志记录Python datetime日期时间处理Python re正则表达式Python csv表格数据处理Python threading 多线程编程Python asyncio 异步编程Python PyQt 图形界面开发Python 应用方向和常用库框架

Python pyecharts数据可视化

pyecharts是一个基于ECharts的Python图表库,能够创建各种交互式图表。ECharts本身是JavaScript可视化库,pyecharts让Python用户也能轻松制作专业图表。


安装pyecharts

使用pip安装pyecharts:

pip install pyecharts

安装完成后检查版本:

import pyecharts
print(pyecharts.__version__)


pyecharts 图表类型

pyecharts 支持以下图表类型图表:

图表类型pyecharts 类包引入
折线图Linefrom pyecharts.charts import Line
柱状图Barfrom pyecharts.charts import Bar
散点图Scatterfrom pyecharts.charts import Scatter
饼图Piefrom pyecharts.charts import Pie
雷达图Radarfrom pyecharts.charts import Radar
热力图HeatMapfrom pyecharts.charts import HeatMap
K 线图Klinefrom pyecharts.charts import Kline
箱线图Boxplotfrom pyecharts.charts import Boxplot
地图Mapfrom pyecharts.charts import Map
词云图WordCloudfrom pyecharts.charts import WordCloud
仪表盘Gaugefrom pyecharts.charts import Gauge
漏斗图Funnelfrom pyecharts.charts import Funnel
树图Treefrom pyecharts.charts import Tree
平行坐标系图Parallelfrom pyecharts.charts import Parallel
桑基图Sankeyfrom pyecharts.charts import Sankey
地理坐标系图Geofrom pyecharts.charts import Geo
时间线图Timelinefrom pyecharts.charts import Timeline
3D 散点图Scatter3Dfrom pyecharts.charts import Scatter3D
3D 柱状图Bar3Dfrom pyecharts.charts import Bar3D
3D 曲面图Surface3Dfrom pyecharts.charts import Surface3D

创建第一个图表

从简单的柱状图开始:

from pyecharts.charts import Bar

# 准备数据
months = ['一月', '二月', '三月', '四月', '五月']
sales = [120, 240, 180, 300, 350]

# 创建柱状图
bar = Bar()
bar.add_xaxis(months)
bar.add_yaxis("销售额", sales)

# 生成html文件
bar.render("sales_chart.html")

运行代码后,会生成sales_chart.html文件。用浏览器打开这个文件,就能看到交互式柱状图。


常用图表类型

pyecharts支持多种图表类型:

折线图

from pyecharts.charts import Line

# 创建折线图
line = Line()
line.add_xaxis(['周一', '周二', '周三', '周四', '周五', '周六', '周日'])
line.add_yaxis("温度", [22, 25, 18, 20, 23, 26, 24])
line.add_yaxis("湿度", [60, 55, 70, 65, 58, 52, 62])

line.render("weather_line.html")

饼图

from pyecharts.charts import Pie

# 创建饼图
pie = Pie()
pie.add("", [["电子产品", 35], ["服装", 25], ["食品", 20], ["图书", 15], ["其他", 5]])

pie.render("sales_pie.html")

散点图

from pyecharts.charts import Scatter

# 创建散点图
scatter = Scatter()
scatter.add_xaxis([1, 2, 3, 4, 5])
scatter.add_yaxis("数据系列", [10, 20, 15, 25, 30])

scatter.render("scatter_plot.html")


图表样式设置

通过设置全局选项让图表更美观:

from pyecharts.charts import Bar
from pyecharts import options as opts

# 创建带样式的柱状图
bar = Bar()

bar.add_xaxis(['苹果', '香蕉', '橙子', '葡萄', '西瓜'])
bar.add_yaxis("销量", [150, 200, 180, 120, 250])

# 设置全局选项
bar.set_global_opts(
    title_opts=opts.TitleOpts(title="水果销量统计", subtitle="2024年数据"),
    xaxis_opts=opts.AxisOpts(name="水果种类"),
    yaxis_opts=opts.AxisOpts(name="销量(公斤)"),
    legend_opts=opts.LegendOpts(is_show=True)
)

bar.render("styled_bar.html")


使用主题

pyecharts提供多种主题:

from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType

# 使用暗色主题
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))

bar.add_xaxis(['第一季度', '第二季度', '第三季度', '第四季度'])
bar.add_yaxis("收入", [450, 620, 580, 720])
bar.add_yaxis("支出", [320, 380, 350, 410])

bar.set_global_opts(
    title_opts=opts.TitleOpts(title="年度财务报告"),
    xaxis_opts=opts.AxisOpts(name="季度"),
    yaxis_opts=opts.AxisOpts(name="金额(万元)")
)

bar.render("dark_theme_bar.html")

可用主题包括:

  • ThemeType.LIGHT:亮色主题

  • ThemeType.DARK:暗色主题

  • ThemeType.CHALK:粉笔风格

  • ThemeType.WALDEN:森林风格

  • ThemeType.ESSOS:绿色调主题


实际应用示例

销售数据分析

from pyecharts.charts import Bar, Line
from pyecharts import options as opts
from pyecharts.components import Table
from pyecharts.charts import Page

def create_sales_dashboard():
    # 创建页面
    page = Page(layout=Page.SimplePageLayout)
    
    # 月度销售额柱状图
    months = ['1月', '2月', '3月', '4月', '5月', '6月']
    sales_2023 = [120, 150, 180, 200, 190, 220]
    sales_2024 = [140, 170, 210, 230, 250, 280]
    
    bar = Bar()
    bar.add_xaxis(months)
    bar.add_yaxis("2023年", sales_2023)
    bar.add_yarray("2024年", sales_2024)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="月度销售额对比"),
        yaxis_opts=opts.AxisOpts(name="销售额(万元)")
    )
    
    # 销售增长率折线图
    growth_rate = [((sales_2024[i] - sales_2023[i]) / sales_2023[i] * 100) for i in range(len(months))]
    
    line = Line()
    line.add_xaxis(months)
    line.add_yaxis("增长率%", growth_rate)
    line.set_global_opts(
        title_opts=opts.TitleOpts(title="销售增长率"),
        yaxis_opts=opts.AxisOpts(name="增长率%")
    )
    
    page.add(bar, line)
    page.render("sales_dashboard.html")

create_sales_dashboard()

学生成绩分析

from pyecharts.charts import Bar, Pie, Scatter
from pyecharts import options as opts

def student_analysis():
    # 学生成绩数据
    students = ['张三', '李四', '王五', '赵六', '钱七']
    math_scores = [85, 92, 78, 65, 88]
    english_scores = [78, 85, 90, 72, 80]
    
    # 成绩分布柱状图
    bar = Bar()
    bar.add_xaxis(students)
    bar.add_yaxis("数学成绩", math_scores)
    bar.add_yaxis("英语成绩", english_scores)
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="学生成绩对比"),
        yaxis_opts=opts.AxisOpts(name="分数")
    )
    
    # 成绩分布饼图
    score_ranges = ['优秀(90-100)', '良好(80-89)', '及格(60-79)', '不及格(<60)']
    score_counts = [1, 3, 1, 0]  # 根据实际数据统计
    
    pie = Pie()
    pie.add("", [list(z) for z in zip(score_ranges, score_counts)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="成绩分布"))
    
    # 保存图表
    bar.render("student_scores_bar.html")
    pie.render("score_distribution_pie.html")

student_analysis()


地图可视化

from pyecharts.charts import Map
from pyecharts import options as opts

def create_china_map():
    # 中国各省份数据
    provinces = ['北京', '上海', '广东', '江苏', '浙江', '山东', '河南', '四川', '湖北', '湖南']
    values = [120, 110, 180, 160, 150, 140, 130, 100, 90, 85]
    
    map_chart = Map()
    map_chart.add("销售额", [list(z) for z in zip(provinces, values)], "china")
    
    map_chart.set_global_opts(
        title_opts=opts.TitleOpts(title="全国销售额分布"),
        visualmap_opts=opts.VisualMapOpts(max_=200)
    )
    
    map_chart.render("china_sales_map.html")

create_china_map()


交互功能设置

添加工具栏和数据提示:

from pyecharts.charts import Line
from pyecharts import options as opts

def interactive_chart():
    line = Line()
    
    # 添加数据
    days = [f"{i}日" for i in range(1, 31)]
    temperature = [22, 23, 25, 24, 26, 28, 27, 25, 23, 22, 
                  20, 21, 23, 24, 26, 25, 27, 26, 24, 23,
                  22, 24, 26, 28, 27, 25, 24, 23, 22, 21]
    
    line.add_xaxis(days)
    line.add_yaxis("温度", temperature)
    
    # 设置交互选项
    line.set_global_opts(
        title_opts=opts.TitleOpts(title="月度温度变化"),
        toolbox_opts=opts.ToolboxOpts(
            is_show=True,
            feature={
                "saveAsImage": {"show": True},
                "restore": {"show": True},
                "dataView": {"show": True}
            }
        ),
        datazoom_opts=opts.DataZoomOpts(is_show=True),
        tooltip_opts=opts.TooltipOpts(trigger="axis")
    )
    
    line.render("interactive_line.html")

interactive_chart()


多图表组合

创建包含多个图表的仪表板:

from pyecharts.charts import Bar, Line, Pie
from pyecharts import options as opts
from pyecharts.charts import Page

def create_company_dashboard():
    page = Page(layout=Page.DraggablePageLayout)
    
    # 部门业绩柱状图
    departments = ['技术部', '销售部', '市场部', '人事部', '财务部']
    performance = [85, 92, 78, 65, 70]
    
    bar = Bar()
    bar.add_xaxis(departments)
    bar.add_yaxis("绩效评分", performance)
    bar.set_global_opts(title_opts=opts.TitleOpts(title="部门绩效"))
    
    # 项目进度折线图
    weeks = ['第1周', '第2周', '第3周', '第4周']
    project_a = [20, 45, 70, 90]
    project_b = [10, 30, 60, 85]
    
    line = Line()
    line.add_xaxis(weeks)
    line.add_yaxis("项目A", project_a)
    line.add_yaxis("项目B", project_b)
    line.set_global_opts(title_opts=opts.TitleOpts(title="项目进度"))
    
    # 员工分布饼图
    positions = ['开发', '测试', '设计', '产品', '运营']
    employee_count = [25, 15, 10, 8, 12]
    
    pie = Pie()
    pie.add("", [list(z) for z in zip(positions, employee_count)])
    pie.set_global_opts(title_opts=opts.TitleOpts(title="员工职位分布"))
    
    page.add(bar, line, pie)
    page.render("company_dashboard.html")

create_company_dashboard()


数据动态更新

创建支持数据更新的图表:

from pyecharts.charts import Bar
from pyecharts import options as opts

def dynamic_data_chart():
    bar = Bar()
    
    # 初始数据
    categories = ['产品A', '产品B', '产品C', '产品D']
    sales_data = [120, 150, 180, 90]
    
    bar.add_xaxis(categories)
    bar.add_yaxis("销售额", sales_data)
    
    bar.set_global_opts(
        title_opts=opts.TitleOpts(title="实时销售数据"),
        yaxis_opts=opts.AxisOpts(name="销售额(万)")
    )
    
    # 添加数据刷新功能
    bar.set_global_opts(
        toolbox_opts=opts.ToolboxOpts(
            feature={
                "dataZoom": {"show": True},
                "saveAsImage": {"show": True},
                "restore": {"show": True}
            }
        )
    )
    
    bar.render("dynamic_sales.html")

dynamic_data_chart()


导出和分享

将图表导出为图片:

from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.render import make_snapshot
from snapshot_selenium import snapshot

def export_as_image():
    bar = Bar()
    bar.add_xaxis(['第一季度', '第二季度', '第三季度', '第四季度'])
    bar.add_yaxis("收入", [450, 620, 580, 720])
    
    bar.set_global_opts(title_opts=opts.TitleOpts(title="年度收入"))
    
    # 保存为HTML
    bar.render("annual_income.html")
    
    # 导出为PNG图片
    make_snapshot(snapshot, bar.render(), "annual_income.png")

export_as_image()


使用技巧

  1. 数据处理:先用pandas处理数据,再用pyecharts绘图

  2. 颜色搭配:选择对比明显的颜色系列

  3. 图表选择:根据数据类型选择合适的图表类型

  4. 交互设计:合理设置提示信息和缩放功能

  5. 响应式布局:确保图表在不同设备上正常显示


总结

pyecharts是一个功能强大的Python可视化库,特点包括:

  • 支持多种图表类型

  • 丰富的交互功能

  • 美观的主题样式

  • 简单的api设计

  • 良好的浏览器兼容性

通过本文介绍的示例,你可以快速上手pyecharts,创建各种数据可视化图表。

记住,好的可视化不仅要美观,更要准确传达数据信息。选择合适的图表类型,合理配置样式,才能制作出真正有用的数据可视化作品。

本文内容仅供个人学习/研究/参考使用,不构成任何决策建议或专业指导。分享/转载时请标明原文来源,同时请勿将内容用于商业售卖、虚假宣传等非学习用途哦~感谢您的理解与支持!

链接: https://fly63.com/course/36_2132

目录选择