目录
1. 安装Pyecharts
2. 图表基础
2.1 主题风格
2.2 图表标题
2.3 图例
2.4 提示框
2.5 视觉映射
2.6 工具箱
2.7 区域缩放
3. 柱状图 Bar模块
4. 折线图/面积图 Line模块
4.1 折线图
4.2 面积图
5.1 饼形图
5.2 南丁格尔玫瑰图
6. 箱线图 Boxplot模块
7. 涟漪特效散点图 EffectScatter模块
8. 词云图 WordCloud模块
9. 热力图 HeatMap模块
10. 水球图 Liquid模块
11. 日历图 Calendar模块
首页 后端开发 Python教程 Python数据可视化之Pyecharts怎么使用

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

May 12, 2023 am 09:55 AM
python pyecharts

    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怎么使用

    以上是Python数据可视化之Pyecharts怎么使用的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

    PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

    在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

    PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

    visual studio code 可以用于 python 吗 visual studio code 可以用于 python 吗 Apr 15, 2025 pm 08:18 PM

    VS Code 可用于编写 Python,并提供许多功能,使其成为开发 Python 应用程序的理想工具。它允许用户:安装 Python 扩展,以获得代码补全、语法高亮和调试等功能。使用调试器逐步跟踪代码,查找和修复错误。集成 Git,进行版本控制。使用代码格式化工具,保持代码一致性。使用 Linting 工具,提前发现潜在问题。

    Python vs. JavaScript:学习曲线和易用性 Python vs. JavaScript:学习曲线和易用性 Apr 16, 2025 am 12:12 AM

    Python更适合初学者,学习曲线平缓,语法简洁;JavaScript适合前端开发,学习曲线较陡,语法灵活。1.Python语法直观,适用于数据科学和后端开发。2.JavaScript灵活,广泛用于前端和服务器端编程。

    vs code 可以在 Windows 8 中运行吗 vs code 可以在 Windows 8 中运行吗 Apr 15, 2025 pm 07:24 PM

    VS Code可以在Windows 8上运行,但体验可能不佳。首先确保系统已更新到最新补丁,然后下载与系统架构匹配的VS Code安装包,按照提示安装。安装后,注意某些扩展程序可能与Windows 8不兼容,需要寻找替代扩展或在虚拟机中使用更新的Windows系统。安装必要的扩展,检查是否正常工作。尽管VS Code在Windows 8上可行,但建议升级到更新的Windows系统以获得更好的开发体验和安全保障。

    PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

    PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

    vscode 扩展是否是恶意的 vscode 扩展是否是恶意的 Apr 15, 2025 pm 07:57 PM

    VS Code 扩展存在恶意风险,例如隐藏恶意代码、利用漏洞、伪装成合法扩展。识别恶意扩展的方法包括:检查发布者、阅读评论、检查代码、谨慎安装。安全措施还包括:安全意识、良好习惯、定期更新和杀毒软件。

    vscode怎么在终端运行程序 vscode怎么在终端运行程序 Apr 15, 2025 pm 06:42 PM

    在 VS Code 中,可以通过以下步骤在终端运行程序:准备代码和打开集成终端确保代码目录与终端工作目录一致根据编程语言选择运行命令(如 Python 的 python your_file_name.py)检查是否成功运行并解决错误利用调试器提升调试效率

    See all articles