当前位置:

首页 > 编程开发 > Python数据可视化之Pyecharts怎么使用

Python数据可视化之Pyecharts怎么使用

1.安装Pyechartspipinstallpyecharts2.图表基础2.1主题风格添加主题风格使用的是InitOpts()方法,该方法的主要参数有:参数描述width画布宽度,要求字符串格式,如width=“500px”height画布高度,要求字符串格式,如width=“500px”chart_id图表ID,作为图表的唯一标识。有多个图表时用来区分不同的图表page_title网页标题,字符串格式theme图表主题。由ThemeType模块提供bg_color图表背景颜色,字符串格式可以选择的风

本文目录

      1. 安装Pyecharts

      pip install pyecharts

      2. 图表基础

      2.1 主题风格

      添加主题风格使用的是 InitOpts() 方法,

      该方法的主要参数有:

      参数描述
      width画布宽度,要求字符串格式,如 width=“500px”
      height画布高度,要求字符串格式,如 width=“500px”
      chart_id图表ID,作为图表的唯一标识。有多个图表时用来区分不同的图表
      page_title网页标题,字符串格式
      theme图表主题。由ThemeType模块提供
      bg_color图表背景颜色,字符串格式

      可以选择的风格有:

      Python数据可视化之Pyecharts怎么使用

      2.2 图表标题

      给图表添加标题需要通过 set_global_options()方法 的 title_opts参数,

      该参数的值通过opts模块的TitleOpts()方法生成,

      且TitleOpts()方法主要参数语法如下:

      Python数据可视化之Pyecharts怎么使用

      2.3 图例

      设置图例需要通过 set_global_opts()方法的 legend_opts参数,

      该参数的参数值参考options模块的LegendOpts()方法。

      LegendOpts() 方法的主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      2.4 提示框

      设置提示框主要是通过 set_global_opts()方法中的 tooltip_opts参数进行设置,

      该参数的参数值参考options模块的TooltipOpts()方法。

      TooltipOpts()方法的主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      2.5 视觉映射

      视觉映射通过 set_global_opts()方法中的 visualmap_opts参数进行设置,

      该参数的取值参考options模块的VisualMapOpts()方法。

      其主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      2.6 工具箱

      工具箱通过 set_global_opts()方法中的 toolbox_opts参数进行设置,

      该参数的取值参考options模块的ToolboxOpts()方法。

      其主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      2.7 区域缩放

      区域缩放通过 set_global_opts()方法中的 datazoom_opts参数进行设置,

      该参数的取值参考options模块的DataZoomOpts()方法。

      其主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      3. 柱状图 Bar模块

      绘制柱状图通过Bar模块来实现,

      该模块的主要方法有:

      主要方法描述
      add_xaxis()x轴数据
      add_yaxis()y轴数据
      reversal_axis()翻转x、y轴数据
      add_dataset()原始数据

      下边展示一个简单的示例,先不使用过多复杂的样式:

      import numpy as np
      from pyecharts.charts import Bar
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      # 生成数据
      years = [2011, 2012, 2013, 2014, 2015]
      y1 = [1, 3, 5, 7, 9]
      y2 = [2, 4, 6, 4, 2]
      y3 = [9, 7, 5, 3, 1]
      y4 = list(np.random.randint(1, 10, 10))
      
      bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
      # 为柱状图添加x轴和y轴数据
      bar.add_xaxis(years)
      bar.add_yaxis('A型', y1)
      bar.add_yaxis('B型', y2)
      bar.add_yaxis('C型', y3)
      bar.add_yaxis('D型', y4)
      # 渲染图表到HTML文件,并保存在当前目录下
      bar.render("bar.html")

      生成图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      这里有一个无法解释的细节,就是可以看到y4数据,即D型,在图像中没有显示出来。经过小啾的反复尝试,发现凡是使用随机数产生的数据再转化成列表,这部分随机数不会被写入到html文件中:

      Python数据可视化之Pyecharts怎么使用

      既然不会解释,那就避免。

      4. 折线图/面积图 Line模块

      Line模块的主要方法有add_xaxis() 和 add_yaxis(),分别用来添加x轴数据和y轴数据。

      add_yaxis()的主要参数如下:

      Python数据可视化之Pyecharts怎么使用

      4.1 折线图

      绘制折线图时,x轴的数据必须是字符串,图线方可正常显示。

      from pyecharts.charts import Line
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      # 准备数据
      x = [2011, 2012, 2013, 2014, 2015]
      x_data = [str(i) for i in x]
      y1 = [1, 3, 2, 5, 8]
      y2 = [2, 6, 5, 6, 7]
      y3 = [5, 7, 4, 3, 1]
      
      line = Line(init_opts=opts.InitOpts(theme=ThemeType.ESSOS))
      line.add_xaxis(xaxis_data=x_data)
      line.add_yaxis(series_name="A类", y_axis=y1)
      line.add_yaxis(series_name="B类", y_axis=y2)
      line.add_yaxis(series_name="C类", y_axis=y3)
      line.render("line.html")

      生成图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      4.2 面积图

      绘制面积图时需要在add_yaxis()方法中指定areastyle_opts参数。其值由options模块的AreaStyleOpts()方法提供。

      from pyecharts.charts import Line
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      
      x = [2011, 2012, 2013, 2014, 2015]
      x_data = [str(i) for i in x]
      y1 = [2, 5, 6, 8, 9]
      y2 = [1, 4, 5, 4, 7]
      y3 = [1, 3, 4, 6, 6]
      
      line = Line(init_opts=opts.InitOpts(theme=ThemeType.WONDERLAND))
      
      line.add_xaxis(xaxis_data=x_data)
      line.add_yaxis(series_name="A类", y_axis=y1, areastyle_opts=opts.AreaStyleOpts(opacity=1))
      line.add_yaxis(series_name="B类", y_axis=y2, areastyle_opts=opts.AreaStyleOpts(opacity=1))
      line.add_yaxis(series_name="C类", y_axis=y3, areastyle_opts=opts.AreaStyleOpts(opacity=1))
      
      line.render("line2.html")

      图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      5.饼形图

      5.1 饼形图

      绘制饼形图使用的是Pie模块,该模块中需要使用的主要方法是add()方法

      该方法主要参数如下:

      主要参数描述
      series_name系列名称。用于提示文本和图例标签。
      data_pair数据项,格式为形如[(key1,value1),(key2,value2)]
      color系列标签的颜色。
      radius饼图的半径。默认设成百分比形式,默认是相对于容器的高和宽中较小的一方的一半
      rosetype是否展开为南丁格尔玫瑰图,可以取的值有radius货area,radius表示通过扇区圆心角展现数据的大小,即默认的扇形图;area表示所有扇区的圆心角的角度相同,通过半径来展现数据大小
      from pyecharts.charts import Pie
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF']
      y_data = [200, 200, 100, 400, 500, 600]
      # 将数据转换为目标格式
      data = [list(z) for z in zip(x_data, y_data)]
      # 数据排序
      data.sort(key=lambda x: x[1])
      
      pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.MACARONS))
      
      pie.add(
              series_name="类别",    # 序列名称
              data_pair=data,     # 数据
          )
      pie.set_global_opts(
              # 饼形图标题
              title_opts=opts.TitleOpts(
                  title="各类别数量分析",
                  pos_left="center"),
              # 不显示图例
              legend_opts=opts.LegendOpts(is_show=False),
          )
      pie.set_series_opts(
              # 序列标签
              label_opts=opts.LabelOpts(),
          )
      
      pie.render("pie.html")

      图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      5.2 南丁格尔玫瑰图

      from pyecharts.charts import Pie
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      
      x_data = ['AAA', 'BBB', 'CCC', 'DDD', 'EEE', 'FFF', 'GGG', 'HHH', 'III', 'JJJ', 'KKK', 'LLL', 'MMM', 'NNN', 'OOO']
      y_data = [200, 100, 400, 50, 600, 300, 500, 700, 800, 900, 1000, 1100, 1200, 1300, 1500]
      # 将数据转换为目标格式
      data = [list(z) for z in zip(x_data, y_data)]
      # 数据排序
      data.sort(key=lambda x: x[1])
      
      # 创建饼形图并设置画布大小
      pie = Pie(init_opts=opts.InitOpts(theme=ThemeType.ROMANTIC, width='300px', height='400px'))
      # 为饼形图添加数据
      pie.add(
              series_name="类别",
              data_pair=data,
              radius=["8%", "160%"],  # 内外半径
              center=["65%", "65%"],  # 位置
              rosetype='area',       # 玫瑰图,圆心角相同,按半径大小绘制
              color='auto'           # 颜色自动渐变
          )
      pie.set_global_opts(
              # 不显示图例
              legend_opts=opts.LegendOpts(is_show=False),
              # 视觉映射
              visualmap_opts=opts.VisualMapOpts(is_show=False,
               min_=100,    # 颜色条最小值
               max_=450000, # 颜色条最大值
          )
      )
      pie.set_series_opts(
              # 序列标签
              label_opts=opts.LabelOpts(position='inside',  # 标签位置
                                        rotate=45,
                                        font_size=8)       # 字体大小
          )
      
      pie.render("pie2.html")

      图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      6. 箱线图 Boxplot模块

      绘制箱线图使用的是Boxplot类。

      这里有一个细节,准备y轴数据y_data时需要在列表外再套一层列表,否则图线不会被显示。

      绘制箱线图使用的是Boxplot模块,

      主要的方法有

      add_xaxis()和add_yaxis()

      from pyecharts.charts import Boxplot
      from pyecharts.globals import ThemeType
      from pyecharts import options as opts
      
      y_data = [[5, 20, 22, 21, 23, 26, 25, 24, 28, 26, 29, 30, 50, 61]]
      
      boxplot = Boxplot(init_opts=opts.InitOpts(theme=ThemeType.INFOGRAPHIC))
      
      boxplot.add_xaxis([""])
      boxplot.add_yaxis('', y_axis=boxplot.prepare_data(y_data))
      boxplot.render("boxplot.html")

      图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      7. 涟漪特效散点图 EffectScatter模块

      绘制涟漪图使用的是EffectScatter模块,代码示例如下:

      from pyecharts.charts import EffectScatter
      from pyecharts import options as opts
      from pyecharts.globals import ThemeType
      
      
      x = [2011, 2012, 2013, 2014, 2015]
      x_data = [str(i) for i in x]
      y1 = [1, 3, 2, 5, 8]
      y2 = [2, 6, 5, 6, 7]
      y3 = [5, 7, 4, 3, 1]
      
      scatter = EffectScatter(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
      scatter.add_xaxis(x_data)
      scatter.add_yaxis("", y1)
      scatter.add_yaxis("", y2)
      scatter.add_yaxis("", y3)
      # 渲染图表到HTML文件,存放在程序所在目录下
      scatter.render("EffectScatter.html")

      图像效果如下:

      Python数据可视化之Pyecharts怎么使用

      8. 词云图 WordCloud模块

      绘制词云图使用的是WordCloud模块,

      主要的方法有add()方法。

      add()方法的主要参数如下:

      add()方法主要的参数有

      Python数据可视化之Pyecharts怎么使用

      准备一个txt文件(001.txt),文本内容以《兰亭集序》为例:

      永和九年,岁在癸丑,暮春之初,会于会稽山阴之兰亭,修禊事也。群贤毕至,少长咸集。此地有崇山峻岭,茂林修竹,又有清流激湍,映带左右,引以为流觞曲水,列坐其次。虽无丝竹管弦之盛,一觞一咏,亦足以畅叙幽情。
      是日也,天朗气清,惠风和畅。仰观宇宙之大,俯察品类之盛,所以游目骋怀,足以极视听之娱,信可乐也。
      夫人之相与,俯仰一世。或取诸怀抱,悟言一室之内;或因寄所托,放浪形骸之外。虽趣舍万殊,静躁不同,当其欣于所遇,暂得于己,快然自足,不知老之将至;及其所之既倦,情随事迁,感慨系之矣。向之所欣,俯仰之间,已为陈迹,犹不能不以之兴怀,况修短随化,终期于尽!古人云:“死生亦大矣。”岂不痛哉!
      每览昔人兴感之由,若合一契,未尝不临文嗟悼,不能喻之于怀。固知一死生为虚诞,齐彭殇为妄作。后之视今,亦犹今之视昔,悲夫!故列叙时人,录其所述,虽世殊事异,所以兴怀,其致一也。后之览者,亦将有感于斯文。

      代码示例如下:

      from pyecharts.charts import WordCloud
      from jieba import analyse
      
      # 基于TextRank算法从文本中提取关键词
      textrank = analyse.textrank
      text = open('001.txt', 'r', encoding='UTF-8').read()
      keywords = textrank(text, topK=30)
      list1 = []
      tup1 = ()
      
      # 关键词列表
      for keyword, weight in textrank(text, topK=30, withWeight=True):
          # print('%s %s' % (keyword, weight))
          tup1 = (keyword, weight)  # 关键词权重
          list1.append(tup1)     # 添加到列表中
      
      # 绘制词云图
      mywordcloud = WordCloud()
      mywordcloud.add('', list1, word_size_range=[20, 100])
      mywordcloud.render('wordclound.html')

      词云图效果如下:

      Python数据可视化之Pyecharts怎么使用

      9. 热力图 HeatMap模块

      绘制热力图使用的是HeatMap模块。

      下边以双色球案例为例,数据使用生成的随机数,绘制出热力图:

      import pyecharts.options as opts
      from pyecharts.charts import HeatMap
      import pandas as pd
      import numpy as np
      
      # 创建一个33行7列的DataFrame,数据使用随机数生成。每个数据表示该位置上该数字出现的次数
      s1 = np.random.randint(0, 200, 33)
      s2 = np.random.randint(0, 200, 33)
      s3 = np.random.randint(0, 200, 33)
      s4 = np.random.randint(0, 200, 33)
      s5 = np.random.randint(0, 200, 33)
      s6 = np.random.randint(0, 200, 33)
      s7 = np.random.randint(0, 200, 33)
      data = pd.DataFrame(
          {'位置一': s1,
           '位置二': s2,
           '位置三': s3,
           '位置四': s4,
           '位置五': s5,
           '位置六': s6,
           '位置七': s7
           },
          index=range(1, 34)
      )
      
      # 数据转换为HeatMap支持的列表格式
      value1 = []
      for i in range(7):
          for j in range(33):
              value1.append([i, j, int(data.iloc[j, i])])
      # 绘制热力图
      x = data.columns
      heatmap=HeatMap(init_opts=opts.InitOpts(width='600px' ,height='650px'))
      heatmap.add_xaxis(x)
      heatmap.add_yaxis("aa", list(data.index), value=value1,  # y轴数据
                        # y轴标签
                        label_opts=opts.LabelOpts(is_show=True, color='white', position="center"))
      heatmap.set_global_opts(title_opts=opts.TitleOpts(title="双色球中奖号码热力图", pos_left="center"),
                              legend_opts=opts.LegendOpts(is_show=False),  # 不显示图例
                              # 坐标轴配置项
                              xaxis_opts=opts.AxisOpts(
                              type_="category",  # 类目轴
                              # 分隔区域配置项
                              splitarea_opts=opts.SplitAreaOpts(
                                  is_show=True,  # 区域填充样式
                                  areastyle_opts=opts.AreaStyleOpts(opacity=1)
                              ),
                              ),
                              # 坐标轴配置项
                              yaxis_opts=opts.AxisOpts(
                              type_="category",  # 类目轴
                              # 分隔区域配置项
                              splitarea_opts=opts.SplitAreaOpts(
                                  is_show=True,
                                  # 区域填充样式
                                  areastyle_opts=opts.AreaStyleOpts(opacity=1)
                                  ),
                                  ),
      
                              # 视觉映射配置项
                              visualmap_opts=opts.VisualMapOpts(is_piecewise=True,    # 分段显示
                                                                min_=1, max_=170,     # 最小值、最大值
                                                                orient='horizontal',  # 水平方向
                                                                pos_left="center")    # 居中
                              )
      heatmap.render("heatmap.html")

      热力图效果如下:

      Python数据可视化之Pyecharts怎么使用

      10. 水球图 Liquid模块

      绘制水球图使用的是Liquid模块。

      from pyecharts.charts import Liquid
      liquid = Liquid()
      liquid.add('', [0.39])
      liquid.render("liquid.html")

      水球图效果如下:

      Python数据可视化之Pyecharts怎么使用

      11. 日历图 Calendar模块

      绘制日历图使用的是Calendar模块

      主要使用的方法是add()方法

      import pandas as pd
      import numpy as np
      from pyecharts import options as opts
      from pyecharts.charts import Calendar
      data = list(np.random.random(30))
      # 求最大值和最小值
      mymax = round(max(data), 2)
      mymin = round(min(data), 2)
      # 生成日期
      index = pd.date_range('20220401', '20220430')
      # 合并列表
      data_list = list(zip(index, data))
      # 生成日历图
      calendar = Calendar()
      calendar.add("",
                   data_list,
                   calendar_opts=opts.CalendarOpts(range_=['2022-04-01', '2022-04-30']))
      calendar.set_global_opts(
              title_opts=opts.TitleOpts(title="2022年4月某指标情况", pos_left='center'),
              visualmap_opts=opts.VisualMapOpts(
                  max_=mymax,
                  min_=mymin+0.1,
                  orient="horizontal",
                  is_piecewise=True,
                  pos_top="230px",
                  pos_left="70px",
              ),
          )
      calendar.render("calendar.html")

      日历图效果如下:

      Python数据可视化之Pyecharts怎么使用

      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发 Python
      相关文章 更多
      python删除一个列表里的重复元素的方法与代码示例
      python删除一个列表里的重复元素的方法与代码示例

      学习如何使用Python高效删除列表中的重复元素。本文提供5种常见方法的代码示例,涵盖保持顺序与不保持顺序的场景,适合初学者和进阶开发者参考。

      Python写接口的步骤及完整代码示例
      Python写接口的步骤及完整代码示例

      详细讲解使用Python编写Web接口的核心步骤与完整代码示例,涵盖环境准备、路由定义、数据校验、服务启动及调试测试方法。

      codex怎么读取word文档及docx文件操作教程
      codex怎么读取word文档及docx文件操作教程

      介绍如何利用编程工具读取和解析Word文档(docx格式),涵盖基础文本提取代码示例、结构化数据处理逻辑,以及处理复杂排版时的技术局限与替代方案。

      怎么在Python中调用C语言代码提升性能
      怎么在Python中调用C语言代码提升性能

      详细讲解在Python中调用C语言代码提升性能的完整实践指南,包含原理分析、编译步骤、ctypes与CFFI具体实现、性能对比及常见陷阱。

      Python与C语言的性能差异及底层原理
      Python与C语言的性能差异及底层原理

      深入解析Python与C语言在执行效率上的数量级差异,从编译机制、变量内存布局、动态类型推断到GIL锁,系统阐明底层核心原理。

      Python和C语言哪个更适合编程入门
      Python和C语言哪个更适合编程入门

      客观对比Python与C语言在心智负担、底层机制与学习反馈上的核心差异,提供清晰有据的选择标准与切实的入门学习路径。

      selenium上传文件教程本地文件路径设置方法
      selenium上传文件教程本地文件路径设置方法

      深入解析Selenium处理文件上传的技术细节,涵盖标准HTML控件的路径直接注入法与非标准控件的系统级模拟方案,提供Windows与Linux环境下的路径设置最佳实践及常见异常排查。

      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景
      大数据开发语言选型:Java对比Scala与Python的优缺点及适用场景

      针对大数据工程场景,系统对比Java、Scala与Python在执行性能、生态结合、开发效率和维护成本上的核心差异,给出清晰的架构选型依据与落地方案。

      langgraph python guide中文入门教程详解
      langgraph python guide中文入门教程详解

      本篇LangGraph Python中文入门教程详解,系统梳理StateGraph状态机定义、节点编写、边与条件路由、检查点持久化(MemorySaver)等核心机制,提供从环境安装到完整循环智能体构建的代码示例与实操指导。

      Windows 安装 Python:从官方入口到虚拟环境的可复现实践
      Windows 安装 Python:从官方入口到虚拟环境的可复现实践

      面向后端开发者,基于 Python 官方文档说明如何在 Windows 上安装 Python、创建 venv 虚拟环境及使用 pip 管理依赖。包含可复制命令、验证方法及工具选择边界,避免常见配置误区。

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。