目录
  • 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.饼形图
      • 5.1 饼形图
      • 5.2 南丁格尔玫瑰图
    • 6. 箱线图 Boxplot模块
      • 7. 涟漪特效散点图 EffectScatter模块
        • 8. 词云图 WordCloud模块
          • 9. 热力图 HeatMap模块
            • 10. 水球图 Liquid模块
              • 11. 日历图 Calendar模块

                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使用详解的详细内容,更多关于Python Pyecharts的资料请关注其它相关文章!

                声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。