快速使用pyecharts绘制常用图表

2023-12-13 03:30:20

目录

?绘制折线图(Line())

?绘制饼图或圆环图(Pie())

?绘制饼图

?绘制圆环图

?绘制散点图(Scatter())

绘制3D柱形图(Bar3D())

绘制统计地图(Map())

?绘制漏斗图(Funnel())

?绘制桑基图(Saneky())

?七图合并(选项卡多图)

总结


?绘制折线图(Line())

  • pyecharts的Line类表示折线图,该类中提供了一个add_yaxis()方法,使用add_yaxis()方法可以为折线图添加数据和配置项。
    • add_yaxis()方法的语法格式如下所示:
    • add_yaxis(series_name, # 表示系列的名称,显示于提示框和图例中。
                y_axis,  # 表示系列数据。
                xaxis_index, # 表示x轴的索引,用于拥有多个x轴的单图表中。
                yaxis_index, # 表示y轴的索引,用于拥有多个y轴的单图表中。
                color,  # 表示系列的注释文本的颜色。
                is_symbol_show, # 表示是否显示标记及注释文本,默认为True。
                symbol,  # 表示标记的图形,可以为'circle'(圆形)、'rect'(矩形)、'roundRect'(圆角矩形)、
                         # 'triangle'(三角形)、'diamond'(菱形)、'pin'(大头针)、'arrow'(箭头)、'none'(无)。
                symbol_size, # 表示标记的大小,可以接收单一数值,也可以接收诸如 [width, height]的数组。
                stack, # 表示将轴上同一类目的数据堆叠放置。
                is_smooth  # 表示是否使用平滑曲线。
                is_step, # 表示是否显示为阶梯图。
               )
  • 折线图
  • # 折线图
    import pyecharts.options as opts
    from pyecharts.charts import Line
    line_demo = (Line()
                 .add_xaxis(['可乐','雪碧','青岛','橙汁','奶茶']) # 表示x轴的标签
                 .add_yaxis('商家A', # 图例名称
                            [102,132,105,52,90], # 表示系列数据
                            symbol='diamond', # 表示标记的图形,'diamond'(菱形)
                            symbol_size=15 # 表示标记的大小,可以接收单一数值,也可以接收诸如 [width, height]的数组。
                           )
                 .add_yaxis('商家B',[86,108,128,66,136],symbol='triangle',symbol_size=15)
                 .set_global_opts(title_opts=opts.TitleOpts(title='折线图示例')) # 全局配置的标题组件的配置项
                )
    line_demo.render_notebook() # 渲染图表

  • 小练习

  • # 绘制折线图
    from pyecharts import options as opts
    from pyecharts.charts import Line
    x = ["水果","书籍","滑板","篮球","面包","泡面","饮料"]
    y_a = [82,87,92,56,104,49,132]
    y_b = [103,25,49,57,68,37,109]
    
    line_demo = (
        Line()
        .add_xaxis(x)
        .add_yaxis(
            '超市A', # 图例
            y_a, # 系列数据
            is_selected=True, # 是否选中图例
            symbol='triangle', # 标记的图形
            symbol_size=20, # 标记大小
            color='red', # 标记颜色
            is_symbol_show=True, # 是否展示
            is_smooth=True, # 是否平滑曲线
            is_hover_animation=True, # 是否开启hover在拐点标志上的提示动画效果
            is_step=True, # 是否显示成阶梯图
            linestyle_opts=opts.LineStyleOpts(
                color='pink', # 线条颜色
                type_='solid', # 线条类型
                width=4 # 线宽
            ),
            itemstyle_opts=opts.ItemStyleOpts( # 图元样式配置项
                border_width=3, # 图形标记边缘宽度
                border_color='blue' # 图形标记边缘颜色
            ),
            label_opts=opts.LabelOpts( # 标签配置项
                color='green', # 文字的颜色
                rotate=15, # 标签旋转。从 -90 度到 90 度。正值是逆时针。
                font_size=20 # 字体大小
            )
        )
        .set_global_opts( # 全局配置项
            legend_opts=opts.LegendOpts( # 图例配置项
                pos_right='20%', # 图例向右移
                item_width=25, # 图例的图形宽度,默认25
            ),
            title_opts=opts.TitleOpts( # 标题配置项
                title="折线图", # 标题
                subtitle='两条折线', # 副标题
                item_gap=15, # 主副标题的间距,默认为10
            ),
            tooltip_opts=opts.TooltipOpts( # 提示框配置项
                background_color='green',# 提示框浮层的背景颜色
                border_color='red', # 提示框浮层的边框颜色
                border_width=5 # 提示框浮层的边框大小
            )
        )
        .add_yaxis(
            "超市B",
            y_b
        )
    )
    # line_demo.render('./折线图.html')
    line_demo.render_notebook()


?绘制饼图或圆环图(Pie())

  • ?pyecharts的Pie类表示饼图,该类中提供了一个add()方法,使用add()方法可以为饼图添加数据和配置项。
    • add()方法的语法格式如下:
    • add(series_name, # 表示系列的名称,显示于提示框和图例中。
          data_pair, # 表示系列数据帧,可以接收形如[[key1, value1[, [key2, value2]...]的数据。
          color=None, # 系列 label 颜色
          radius=None, # 表示饼图的半径,可以接收一个包含两个元素的数组,其中数组的第一项为内半径,第二项为外半径。
                          #  默认设置成百分比,相对于容器高宽中较小的一项的一半
          center=None, # 表示饼图的中心坐标。数组的第一项是横坐标,第二项是纵坐标
                      # 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
          rosetype=None,  # 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。
                          # radius:扇区圆心角展现数据的百分比,半径展现数据的大小
                          # area:所有扇区圆心角相同,仅通过半径展现数据大小
          is_clockwise=True, # 表示饼图的扇区是否按顺时针排布。
          label_opts=opts.LabelOpts(),  # 标签配置项,
          tooltip_opts=None, # 提示框组件配置项,
          itemstyle_opts=None, # 表示图元样式配置项。
          encode: types.Union[types.JSFunc, dict, None] = None, # 可以定义 data 的哪个维度被编码成什么。
         )
  • ?绘制饼图

  • # 绘制饼图
    import pyecharts.options as opts
    from pyecharts.charts import Pie
    pie_demo = (
        Pie()
        .add("", # 可直接对应key
             [["小米",150],["三星",20],["华为",120],["苹果",120],["魅族",117],["VIVO",145],["OPPPO",128]] # 系列数据帧[[key1, value1]]
            )
        .set_global_opts(title_opts=opts.TitleOpts("饼图实例")) # 全局配置之标题配置
    )
    pie_demo.render_notebook() # 渲染图表

  • ?绘制圆环图

  • # 绘制圆环图
    import pyecharts.options as opts
    from pyecharts.charts import Pie
    pie_demo = (
        Pie()
        .add("", # 可直接对应key
             [["小米",150],["三星",20],["华为",120],["苹果",120],["魅族",117],["VIVO",145],["OPPPO",128]], # 系列数据帧[[key1, value1]]
             center=['50%','50%'], # 默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
             radius=[100,160] # 表示饼图的半径,可以接收一个包含两个元素的数组,其中数组的第一项为内半径,第二项为外半径。
            )
        .set_global_opts(title_opts=opts.TitleOpts("饼图实例")) # 全局配置之标题配置
    )
    pie_demo.render_notebook() # 渲染图表


?绘制散点图(Scatter())

  • pyecharts的Scatter类表示散点图,EffectScatter类表示带有涟漪特效的散点图, 这两个类中均提供了一个add_yaxis()方法,使用add_yaxis()方法可以为散点图添加数据和配置项。
    • add_yaxis ()方法的语法格式如下所示:
    • add_yaxis(series_name,  # 表示系列的名称,显示于提示框和图例中。
                y_axis, # 表示系列数据。
                is_selected=True, # 表示是否选中图例。
                xaxis_index=None, # 使用的 x 轴的 index,在单个图表实例中存在多个 x 轴的时候有用。
                yaxis_index=None, # 使用的 y 轴的 index,在单个图表实例中存在多个 y 轴的时候有用。
                color=None, # 系列 label 颜色
                symbol=None,  # 表示标记的图形。
                              # ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 
                              # 'diamond', 'pin', 'arrow', 'none'
                              # 可以通过 'image://url' 设置为图片,其中 URL 为图片的链接,或者 dataURI。
                symbol_size=10, # 表示标记的大小。
                label_opts=opts.LabelOpts(position="right"), # 标签配置项
                markpoint_opts=None, # 标记点配置项
                markline_opts=None, # 标记线配置项
                tooltip_opts=None,  # 提示框组件配置项
                itemstyle_opts=None # 图元样式配置项
               )


    • # 带有涟漪特效的散点图(最上面有涟漪)
      import pyecharts.options as opts
      from pyecharts.charts import EffectScatter
      
      effect_demo = (
          EffectScatter()
          .add_xaxis(['周一','周二','周三','周四','周五','周六','周日']) # x轴标签
          .add_yaxis("", # 图例空白
                     [30,108,73,116,73,143,106], # 系列数据
                     symbol='pin' # 标记的图形
                    )
          .set_global_opts(
                            title_opts=opts.TitleOpts(title='涟漪特效散点图示例'),
                            xaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True)), # 显示x轴网格
                            yaxis_opts=opts.AxisOpts(splitline_opts=opts.SplitLineOpts(is_show=True))  # 显示y轴网格           
                            )
          )
      effect_demo.render_notebook() # 渲染图表
    • ?

????????

绘制3D柱形图(Bar3D())

  • pyecharts的Bar3D类表示3D柱形图,该类中提供了一个add()方法, 使用add()方法可以为3D柱形图添加数据和配置项。
    • add()方法的语法格式如下:
    • add(series_name, # 表示系列的名称,显示于提示框和图例中。
          data, # 表示数据。
          shading=None, # 表示阴影。
          itemstyle_opts=None, # 表示图元样式配置项。
          label_opts=opts.LabelOpts(is_show=False),
          xaxis3d_opts=opts.Axis3DOpts(type_="category"),  # 表示x坐标轴的配置项。
          yaxis3d_opts=opts.Axis3DOpts(type_="category"),  # 表示y坐标轴的配置项。
          # zaxis3d_opts:表示z坐标轴的配置项。
          grid3d_opts=opts.Grid3DOpts()  # 表示3D图表网格的配置项。
         )
  • 绘制3D柱形图
  • ?
    # 绘制3D柱形图
    import random
    from pyecharts import options as opts
    from pyecharts.charts import Bar3D
    
    data = [(i, j,random.randint(2, 20)) for i in range(7) for j in range(10)] 
    #  data = [(0, 0, 11), (0, 1, 20), (0, 2, 6),....., (6, 7, 8), (6, 8, 5), (6, 9, 14)]
    # data1 = [[d[1], d[0],d[2]] for d in data]
    # data1 = [[0, 0, 11], [1, 0, 20], [2, 0, 6],...,[7, 6, 8], [8, 6, 5], [9, 6, 14]]
    bar_3d = (
        Bar3D()
        .add("", # 表示系列的名称,显示于提示框和图例中。
             [[d[1], d[0],d[2]] for d in data], # 数据
             xaxis3d_opts=opts.Axis3DOpts(type_="value"), # 坐标轴类型,'value': 数值轴,适用于连续数据。
             yaxis3d_opts=opts.Axis3DOpts(['Saturday','Friday','Thursday','Wednesday','Thesday','Monday','Sunday'], # 类目数据
                                          type_='category'),#  # 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
             zaxis3d_opts=opts.Axis3DOpts(type_='value') # 坐标轴类型,'value': 数值轴,适用于连续数据。
             )
        .set_global_opts(
            visualmap_opts=opts.VisualMapOpts(max_=30), # 指定 visualMapPiecewise 组件的最大值。
            title_opts=opts.TitleOpts(title='3D柱形图示例') # # 主标题文本,支持使用 \n 换行。
            )
        )
    bar_3d.render_notebook() # 渲染图表


绘制统计地图(Map())

  • pyecharts的Map类表示统计地图,该类中提供了一个add()方法,使用add()方法可以为统计地图添加数据和配置项。
    • add()方法的语法格式如下:
    • add(series_name, # 表示系列的名称,显示于提示框和图例中。
          data_pair, # 表示数据项,可以为诸如(坐标点名称, 坐标点值)形式的值。
          maptype="china", # 表示地图的类型,具体类型可参考pyecharts.datasets.map_filenames.json文件。
          is_selected=True, # 是否选中图例,默认True
          is_roam=True, # 是否开启鼠标缩放和平移漫游。默认True
          center=None, # 当前视角的中心点,用经纬度表示
          zoom=1,  # 当前视角的缩放比例。默认1
          name_map=None, # 自定义地区的名称映射
          symbol=None, # 标记图形形状
          is_map_symbol_show=True, # 是否显示标记图形,默认True
          label_opts=opts.LabelOpts(), # 标签配置项,参考 `series_options.LabelOpts`
          emphasis_itemstyle_opts=None, # 高亮图元样式配置项,参考 `series_options.ItemStyleOpts`
          tooltip_opts=None, # 提示框组件配置项,参考 `series_options.TooltipOpts`
          itemstyle_opts=None, # 图元样式配置项,参考 `series_options.ItemStyleOpts`
          emphasis_label_opts=None # 高亮标签配置项,参考 `series_options.LabelOpts`
         )
  • 绘制统计地图
  • # 绘制统计地图
    from pyecharts import options as opts
    from pyecharts.charts import Map
    
    data_map = [['汕头市',100],['汕尾市',88],['揭阳市',99],['阳江市',68],
                ['肇庆市',35],['广州市',28],['惠州市',20]] # 数据,[坐标点名称, 坐标点值]
    map_demp = (
        Map() # Map类对象
        .add("商家A", # 图例
             data_map, #系列数据
             "广东" #地图类型
            )
        .set_global_opts(title_opts=opts.TitleOpts(title="广东地图示例"), # 标题配置项, title= 主标题文本,支持使用 \n 换行。
                        visualmap_opts=opts.VisualMapOpts() #视觉配置项
                        )
    )
    # map_demp.render("./统计地图.html") # 保存为html
    map_demp.render_notebook() # 渲染图表


?绘制漏斗图(Funnel())

  • pyecharts的Funnel类表示漏斗图,该类中提供了一个add()方法, 使用add()方法可以为漏斗图添加数据和配置项。
    • add()方法的语法格式如下:
    • add(
          series_name:str, # 系列名称,用于显示于提示框和图例中。
          data_pair:Sequence, # 系列数据项,格式为[[key1, value1],[key2, value2]]
          is_selected:bool = True, # 是否选中图例
          color:Option[str] = None, # 系列标签的颜色
          sort_:str = 'descending', # 数据排序,可以取 'ascending','descending','none'(表示按data顺序)
          gap:Numeric = 0, # 数据图形间距
          label_opts:Union[opts.LabelOpts, dict] = opts.LabelOpts(), # 标签配置项,参考 `series_options.LabelOpts`
          tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, # 提示框组件配置项,参考 `series_options.TooltipOpts`
          itemstyle_opts: Union[opts.ItemStyleOpts, dict, None] = None,  # 图元样式配置项,参考 `series_options.ItemStyleOpts`
      
      )
  • 绘制漏斗图
  • # 绘制漏斗图
    from pyecharts import options as opts
    from pyecharts.charts import Funnel
    
    data_fun = [['草莓',150],['芒果',118],['葡萄',25],['雪梨',89],
                ['西瓜',102],['柠檬',103],['车厘子',83]] # 准备数据项 data_pair
    funnel_demo = (
        Funnel() # 创建Funnel类对象
        .add(
            "",  # 图例
            data_fun, # 系列数据项,格式为[(key1, value1),(key2, value2)]
            sort_='ascending' # 数据排序,从小到大
        )
        .set_global_opts( # 全局配置
            title_opts = opts.TitleOpts(title='漏斗图示例') # 标题配置项,title=标题可\n换行
        )
    )
    # funnel_demo.render("./漏斗图示例.html")
    funnel_demo.render_notebook()
    ?


?绘制桑基图(Saneky())

  • pyecharts的Saneky类表示桑基图,该类中提供了一个add()方法, 使用add()方法可以为桑基图添加数据和配置项。
    • add()方法的语法格式如下:
    • add(
          series_name: str, # 系列名称,用于显示于提示框和图例中。
          nodes: Sequence, # 表示分支的序列。
          links: Sequence, # 表示链接的序列。
          node_width: Numeric = 20, # 表示分支的宽度。 桑基图中每个矩形节点的宽度。
          node_gap: Numeric=8 # 表示分支的间隔。桑基图中每一列任意两个矩形节点之间的间隔。
          node_align: str = "justify",
          # 桑基图中节点的对齐方式,默认是双端对齐,可以设置为左对齐或右对齐,对应的值分别是:
          # justify: 节点双端对齐。
          # left: 节点左对齐。
          # right: 节点右对齐。
          pos_top: types.Union[str, types.Numeric] = "5%", # Sankey 组件离容器上侧的距离。pos_left...
          focus_node_adjacency: types.Union[bool, str] = False,
          # 鼠标 hover 到节点或边上,相邻接的节点和边高亮的交互,默认关闭,可手动开启。
          # false:hover 到节点或边时,只有被 hover 的节点或边高亮。
          # true:同 'allEdges'。
          # 'allEdges':hover 到节点时,与节点邻接的所有边以及边对应的节点全部高亮。hover 到边时,边和相邻节点高亮。
          # 'outEdges':hover 的节点、节点的出边、出边邻接的另一节点 会被高亮。hover 到边时,边和相邻节点高亮。
          # 'inEdges':hover 的节点、节点的入边、入边邻接的另一节点 会被高亮。hover 到边时,边和相邻节点高亮。
          levels: types.SankeyLevel = None, # 桑基图每一层的设置。可以逐层设置
          label_opts: Union[opts.LabelOpts, dict] = opts.LabelOpts(), # 标签配置项,参考 `series_options.LabelOpts`
          linestyle_opt: Union[opts.LineStyleOpts, dict] = opts.LineStyleOpts(),# # 线条样式配置项,参考 `series_options.LineStyleOpts`
          tooltip_opts: Union[opts.TooltipOpts, dict, None] = None, # 提示框组件配置项,参考 `series_options.TooltipOpts`
      )
  • ?绘制桑基图
  • # 绘制桑基图
    from pyecharts import options as opts
    from pyecharts.charts import Sankey
    
    nodes = [
        {"name":"category1"},{"name":"category2"},
        {"name":"category3"},{"name":"category4"},
        {"name":"category5"},{"name":"category6"}
    ]
    links = [
        {"source":"category1","target":"category2","value":10}, # category1~category2 10
        {"source":"category2","target":"category3","value":15}, # category3~category3 15
        {"source":"category3","target":"category4","value":20}, # category3~category4 20
        {"source":"category5","target":"category6","value":25}  # category5~category6 25
    ]
    sankey_demo = (
        Sankey() # 创建Sankey类对象
        .add(
            "", # 图例
            nodes=nodes, # 分支的序列
            links=links, # 链接的序列
            linestyle_opt=opts.LineStyleOpts(
                opacity=0.2, # 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形。
                curve=0.5, # 线的弯曲度,0 表示完全不弯曲
                color="source" # 渐变色
            ),
            label_opts=opts.LabelOpts(
                position="right" # 
            ) 
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="桑基图示例"))
    )
    # sankey_demo.render("./桑基图示例.html")
    sankey_demo.render_notebook()


?七图合并(选项卡多图)

# 导包
import random
from pyecharts import options as opts
from pyecharts.charts import Tab,Line,Pie,Scatter,Bar3D,Map,Funnel,Sankey
from pyecharts.faker import Faker
import numpy as np

# 折线图
x = ["水果","书籍","滑板","篮球","面包","泡面","饮料"]
y_a = [82,87,92,56,104,49,132]
y_b = [103,25,49,57,68,37,109]

line_demo = (
    Line()
    .add_xaxis(x)
    .add_yaxis(
        '超市A', # 图例
        y_a, # 系列数据
        is_selected=True, # 是否选中图例
        symbol='triangle', # 标记的图形
        symbol_size=20, # 标记大小
        color='red', # 标记颜色
        is_symbol_show=True, # 是否展示
        is_smooth=True, # 是否平滑曲线
        is_hover_animation=True, # 是否开启hover在拐点标志上的提示动画效果
        is_step=True, # 是否显示成阶梯图
        linestyle_opts=opts.LineStyleOpts(
            color='pink', # 线条颜色
            type_='solid', # 线条类型
            width=4 # 线宽
        ),
        itemstyle_opts=opts.ItemStyleOpts( # 图元样式配置项
            border_width=3, # 图形标记边缘宽度
            border_color='blue' # 图形标记边缘颜色
        ),
        label_opts=opts.LabelOpts( # 标签配置项
            color='green', # 文字的颜色
            rotate=15, # 标签旋转。从 -90 度到 90 度。正值是逆时针。
            font_size=20 # 字体大小
        )
    )
    .set_global_opts( # 全局配置项
        legend_opts=opts.LegendOpts( # 图例配置项
            pos_right='20%', # 图例向右移
            item_width=25, # 图例的图形宽度,默认25
        ),
        title_opts=opts.TitleOpts( # 标题配置项
            title="折线图", # 标题
            subtitle='两条折线', # 副标题
            item_gap=15, # 主副标题的间距,默认为10
        ),
        tooltip_opts=opts.TooltipOpts( # 提示框配置项
            background_color='green',# 提示框浮层的背景颜色
            border_color='red', # 提示框浮层的边框颜色
            border_width=5 # 提示框浮层的边框大小
        )
    )
    .add_yaxis(
        "超市B",
        y_b
    )
)

# 饼图
label = Faker.choose()
data = Faker.values()

pie_demo = (
    Pie() # 创建Pie类对象
    .add(
        "",
        [list(z) for z in zip(label,data)], # 系列数据帧,接受[[key,value]..]数据
        radius=['30%','70%'], # 设置饼图的半径,数组的第一项是内半径,第二项是外半径
#         center=['20%','40%'] 饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标
        rosetype='raduis',# 是否展示成南丁格尔图,通过半径区分数据大小,有'radius'和'area'两种模式。
        # radius:扇区圆心角展现数据的百分比,半径展现数据的大小
        # area:所有扇区圆心角相同,仅通过半径展现数据大小
        label_opts=opts.LabelOpts( # 标签配置项
            position='left', # 标签位置
            font_size=20, # 标签的字体大小
            font_style='italic' # 字体风格
        ),
        itemstyle_opts=opts.ItemStyleOpts( # 图元配置项
            border_color='red', # 图形的描边颜色
            border_width=1 # 图形的描边宽度,默认不描边
        )
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='饼图示例',
            subtitle='设置半径的圆环图'
        ),
        tooltip_opts=opts.TooltipOpts( # 提示框配置项
            trigger='item',# 触发类型。可选:
            # 'item': 数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。
            # 'axis': 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。
            # 'none': 什么都不触发
        ),
        legend_opts=opts.LegendOpts( # 图例配置项
            pos_left='20%' # 图例组件离容器上侧的距离。
        )
    )
)

# 散点图
scatter_demo = (
    Scatter() # 创建类对象
    .add_xaxis(Faker.choose()) # 设置x轴标签
    .add_yaxis(
        "类型A", # 图例
        Faker.values(), # 系列数据 
        color='green', # 设置系列label的颜色
        symbol='diamond', # 设置标记的图形
        symbol_size=20, # 设置标记的大小
        label_opts=opts.LabelOpts( # 标签配置项
            position='bottom', # 标签放在下面,标签位置
            color='red', # 标签颜色
            font_size=15 # 文字的字体大小
        ),
        tooltip_opts=opts.TooltipOpts( # 提示框组件配置项
            position='left', # 提示信息的方向
            background_color='red', # 提示框的背景颜色
            border_color='yellow', # 提示框的边框颜色
            border_width=2 # 提示框的边框宽
        ),
        itemstyle_opts=opts.ItemStyleOpts( # 图元样式配置项
            border_color='red', # 描边的颜色
            border_width=1 # 描边的宽度
        )
    )
    .set_global_opts(
        title_opts=opts.TitleOpts( # 标题配置项
            title='散点图示例', # 标题
            subtitle='不同的散点' # 副标题
        ),
        legend_opts=opts.LegendOpts( # 图例配置项
            pos_right='50%', # 图例位置,左移50%
        ),
        visualmap_opts=opts.VisualMapOpts(
            type_='color', # 映射过渡类型,可选,"color", "size"
            max_=150, # 指定 visualMapPiecewise 组件的最大值。
            min_=20, # 指定 visualMapPiecewise 组件的最大值。
        )
    )
    .add_yaxis(
        "类型B",
        Faker.values()
    )
)

# 3d柱形图 
data = [(i,j,random.randint(2,20)) for i in range(7) for j in range(10)]
# data = [(0, 0, 11), (0, 1, 20), (0, 2, 6),....., (6, 7, 8), (6, 8, 5), (6, 9, 14)]
# data1 = [[d[1], d[0],d[2]] for d in data]
# data1 = [[0, 0, 11], [1, 0, 20], [2, 0, 6],...,[7, 6, 8], [8, 6, 5], [9, 6, 14]]
bar3d_demo = (
    Bar3D() #创建类对象
    .add(
        "",
        [[d[1],d[0],d[2]] for d in data], # 三维数据
        xaxis3d_opts=opts.Axis3DOpts(type_="value"), # 坐标轴类型,'value': 数值轴,适用于连续数据。
        yaxis3d_opts=opts.Axis3DOpts(['Saturday','Friday','Thursday','Wednesday','Thesday','Monday','Sunday'], # 类目数据
                                     type_='category'# 'category': 类目轴,适用于离散的类目数据,为该类型时必须通过 data 设置类目数据。
                                    ),
        zaxis3d_opts=opts.Axis3DOpts(type_='value') # 坐标轴类型,'value': 数值轴,适用于连续数据。
    )
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(max_=30), # 指定 visualMapPiecewise 组件的最大值。
        title_opts=opts.TitleOpts(
            title='3D柱形图示例', # 主标题文本,支持使用 \n 换行。
            subtitle='3D图'
        ) 
    )
)

# 统计地图
data_map = [['汕头市',100],['汕尾市',88],['揭阳市',99],['阳江市',68],
            ['肇庆市',35],['广州市',28],['惠州市',20]] # 数据,[坐标点名称,坐标点值]
map_demo = (
    Map()
    .add(
        "广东", # 图例
        data_map, # 系列数据
        "广东", # 地图类型
        aspect_scale=1, # 参数用于 scale 地图的长宽比。默认0.75
        min_scale_limit=0.75, # 最小的缩放值
        max_scale_limit=2, # 最大的缩放值
        label_opts=opts.LabelOpts( # 标签配置项
            color='red', # 标签颜色
            font_size=12, # 文字的大小
            position='left', # 标签的位置
        ),
        itemstyle_opts=opts.ItemStyleOpts( # 图元样式配置项
            border_color='green', # 边缘颜色
            border_width=1, # 边缘宽度
        ),
        tooltip_opts=opts.TooltipOpts( # 提示框配置项
            border_color='red', #浮层边框颜色
            border_width=2, # 边框宽度
            background_color='green' # 浮层背景颜色
        )
    )
    .set_global_opts( # 全局配置
        title_opts=opts.TitleOpts( # 标题配置项
            title='广东地图', # 主标题,可\n换行
            subtitle='统计地图' # 副标题
        ),
        visualmap_opts=opts.VisualMapOpts( # 视觉映射配置项
            type_='color',# 映射过渡类型,可选,"color", "size"
            min_=0, # 指定 visualMapPiecewise 组件的最小值。
            max_=200, # 指定 visualMapPiecewise 组件的最大值。
            orient='horizontal', # 如何放置 visualMap 组件,水平('horizontal')或者竖直('vertical')。
        )
    )
)

# 漏斗图
data_fun = [list(z) for z in zip (Faker.choose(),Faker.values())]
# 等价于 [[i,j] for i,j in zip (Faker.choose(),Faker.values())]
funel_demo = (
    Funnel() # 创建类对象
    .add(
        "",
        data_fun, # 系列数据,格式为[[key1, value1],[key2, value2]]
        sort_='descending', # 数据排序, 可以取 'ascending','descending','none'(表示按 data 顺序)
        # 默认'descending'表示数据从多到少排序
        gap=1.5, # 数据图像的间距
        label_opts=opts.LabelOpts( # 标签配置项
            position='left', # 标签位置
            font_size=15, # 文字的字体大小
            color='red', # 文字的颜色
        ),
        itemstyle_opts=opts.ItemStyleOpts( # 图元样式配置项
            border_color='red', # 图行的描边颜色
            border_width=1.5, # 图形边缘变宽
            border_type='dashed', # 边缘描边虚线
        ),
        tooltip_opts=opts.TooltipOpts(
            background_color='green', # 浮层的背景颜色
            border_color='red', # 浮层边缘边框的颜色
            border_width=2, # 浮层边框的宽度
        )
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(
            title='漏斗图示例',
            subtitle='常规漏斗图'
        ),
        visualmap_opts=opts.VisualMapOpts(
            type_='color', # 映射过渡类型,可选,"color", "size"
            min_=20, # 指定 visualMapPiecewise 组件的最小值。
            max_=170, # 指定 visualMapPiecewise 组件的最大值。
        ),
        legend_opts=opts.LegendOpts(
            pos_right='20%',# right 的值可以是像 20 这样的具体像素值,可以是像 '20%' 这样相对于容器高宽的百分比,
            legend_icon='rect', # 图例的图形形状,包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
        )
    )
)

# 桑基图
nodes = [
    {"name":"category1"},{"name":"category2"},
    {"name":"category3"},{"name":"category4"},
    {"name":"category5"},{"name":"category6"}
]
links = [
    {"source":"category1","target":"category2","value":10}, # category1~category2 10
    {"source":"category2","target":"category3","value":15}, # category3~category3 15
    {"source":"category3","target":"category4","value":20}, # category3~category4 20
    {"source":"category5","target":"category6","value":25}  # category5~category6 25
]
sankey_demo = (
    Sankey()
    .add(
        "base桑基图", #图例
        nodes=nodes, # 分支的序列
        links=links, # 链接的序列
        linestyle_opt=opts.LineStyleOpts( # 线样式配置项
            opacity=0.2, # 图形透明度,支持从0到1的数字,为01时不绘制该图形
            curve=0.5, # 线的弯曲度,0表示完全不弯曲
            color="source" # 渐变色
        ),
        label_opts=opts.LabelOpts( # 标签配置项
            position='right', #标签的位置
            color='red', # 标签的颜色
            font_size=14, # 文字的字体颜色
        ),
        tooltip_opts=opts.TooltipOpts( # 提示框配置项
            background_color='green', # 浮层的背景颜色
            border_color='red', # 浮层的边框颜色
            border_width=2 # 浮层的边框宽度
        )
    )
    .set_global_opts( # 全局配置
        title_opts=opts.TitleOpts( # 标题配置项
            title="桑基图示例", # 主标题
            subtitle="基本桑基图", # 副标题
        ),
       visualmap_opts=opts.VisualMapOpts(
           type_='color', # 映射过渡类型,可选,"color", "size"
           min_=10, # 指定 visualMapPiecewise 组件的最小值。
           max_=25, # 指定 visualMapPiecewise 组件的最大值。
           orient='vertical'# 如何放置 visualMap 组件,水平('horizontal')或者竖直('vertical')。
       ) 
    )
)

tab = (
    Tab() # 创建类对象,选项卡多图
    .add(
        line_demo, # charts图表
        '折线图' # 标签名称
    )
    .add(
        pie_demo,
        '饼图'
    )
    .add(
        scatter_demo,
        '散点图'
    )
    .add(
        bar3d_demo,
        '3D柱形图'
    )
    .add(
        map_demo,
        '统计地图'
    )
    .add(
        funel_demo,
        '漏斗图'
    )
    .add(
        sankey_demo,
        '桑基图'
    )
)
# tab.render('./作业.html')
tab.render_notebook()

总结

今天主要使用pyecharts绘制了常用的图表,可以照着案例多加练习。

文章来源:https://blog.csdn.net/m0_56181660/article/details/132733276
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。