查看原文
其他

超详细Pyecharts 1.x 教程,让你的图表动起来~

木木小宇宙 凹凸数据 2021-08-09
↑ 关注 + 星标 ~ 有趣的不像个技术号每晚九点,我们准时相约  

作者:木木小宇宙

来源:Python数据分析实战与AI干货


大家好,我是朱小五



今天交流群有同学问Pyecharts1.x版本的使用方法,小五正好分享一篇,是对这个库新版本的系统讲解,值得细看!


当然详细版最好还是看文档


文档:https://pyecharts.org/#/

示例:https://gallery.pyecharts.org/

01 前言


Pyecharts在1.x版本之后迎来重大更新,与老版本(0.5X)已是两个完全不同的版本,所以很多小伙伴在使用Pyecharts出现了类似'pyecharts' has no attribute 'xxx'的报错,那是因为你安装了1.x的版本却使用了0.5x的调用方法。



当然如果你更习惯使用0.5X版本的可以通过如下语句来进行安装:pip install pyecharts==0.5.11


安装1.x版本(仅支持Python 3.6+):pip install pyecharts


本文将会介绍Pyecharts1.x版本的使用方法,本文所有语句均基于v1.6.2,通过以下语句查询使用pyecharts版本:



import pyecharts

print(pyecharts.__version__)


02 基本使用


链式调用


pyecharts在v1.x之后支持链式调用,具体语句如下:


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

# 示例数据
cate = ['Apple''Huawei''Xiaomi''Oppo''Vivo''Meizu']
data1 = [123153891079823]
data2 = [567793684567]

# 1.x版本支持链式调用
bar = (Bar()
       .add_xaxis(cate)
       .add_yaxis('电商渠道', data1)
       .add_yaxis('门店', data2)
       .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
      )

bar.render_notebook()



:其实这运行结果都是动态的,这里只放上截图,可在自己电脑上Jupyter 中运

行查看!


全局配置


可以通过全局配置(.set_global_opts():)控制以下区域




系列配置


可以通过系列配置(.set_global_opts():)控制图表中的文本,线样式,标记等.


"""
系列配置项使用示例:
1. 不显示数值
2. 标记每个系列的最大值
"""

bar = (Bar()
       .add_xaxis(cate)
       .add_yaxis('电商渠道', data1)
       .add_yaxis('门店', data2)
       .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                        markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),]))
       .set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题"))
      )

bar.render_notebook()



03 饼图


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

# 示例数据
cate = ['Apple''Huawei''Xiaomi''Oppo''Vivo''Meizu']
data = [153124107998946]
pie = (Pie()
       .add('', [list(z) for z in zip(cate, data)],
            radius=["30%""75%"],
            rosetype="radius")
       .set_global_opts(title_opts=opts.TitleOpts(title="Pie-基本示例", subtitle="我是副标题"))
       .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
      )

pie.render_notebook()



04 折线图


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

# 示例数据
cate = ['Apple''Huawei''Xiaomi''Oppo''Vivo''Meizu']
data1 = [123153891079823]
data2 = [567793684567]
"""
折线图示例:
1. is_smooth 折线 OR 平滑
2. markline_opts 标记线 OR 标记点
"""

line = (Line()
       .add_xaxis(cate)
       .add_yaxis('电商渠道', data1, 
                  markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
       .add_yaxis('门店', data2, 
                  is_smooth=True
                  markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(name="自定义标记点"
                                                                             coord=[cate[2], data2[2]], value=data2[2])]))
       .set_global_opts(title_opts=opts.TitleOpts(title="Line-基本示例", subtitle="我是副标题"))
      )

line.render_notebook()



05 漏斗图


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

# 示例数据
cate = ['访问''注册''加入购物车''提交订单''付款成功']
data = [30398152301004581095698]
"""
漏斗图示例:
1. sort_控制排序,默认降序;
2. 标签显示位置
"""

funnel = (Funnel()
          .add("用户数", [list(z) for z in zip(cate, data)], 
               sort_='ascending',
               label_opts=opts.LabelOpts(position="inside"))
          .set_global_opts(title_opts=opts.TitleOpts(title="Funnel-基本示例", subtitle="我是副标题"))
         )

funnel.render_notebook()



06 热力图


from pyecharts.charts import HeatMap
from pyecharts import options as opts
from pyecharts.faker import Faker
import random

# 示例数据
data = [[i, j, random.randint(050)] for i in range(24for j in range(7)]
heat = (HeatMap()
        .add_xaxis(Faker.clock)
        .add_yaxis("访客数"
                   Faker.week, 
                   data,
                   label_opts=opts.LabelOpts(is_show=True, position="inside"))
        .set_global_opts(
            title_opts=opts.TitleOpts(title="HeatMap-基本示例", subtitle="我是副标题"),
            visualmap_opts=opts.VisualMapOpts(),
            legend_opts=opts.LegendOpts(is_show=False))
       )

heat.render_notebook()



07 地理图



16
17_map.render_notebook()



08 地理热点图


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

province = ['广东''湖北''湖南''四川''重庆''黑龙江''浙江''山西''河北''安徽''河南''山东''西藏']
data = [(i, random.randint(50150)) for i in province]
_map = (
        Map()
        .add("销售额", data, "china")
        .set_global_opts(
            title_opts=opts.TitleOpts(title="Map-基本示例"),
            legend_opts=opts.LegendOpts(is_show=False),
            visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
        )
    )

_map.render_notebook()



09 组合图标


from pyecharts import options as opts
from pyecharts.charts import Map, Bar, Grid
from pyecharts.globals import ChartType, ThemeType
import random

province = ['武汉''十堰''鄂州''宜昌''荆州''孝感''黄石''咸宁''仙桃']
data = [324125145216241244156278169]
bar = (Bar()
       .add_xaxis(province)
       .add_yaxis('营业额', data)
       .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
       .set_global_opts(
            title_opts=opts.TitleOpts(title="Grid-Bar")
        )
      )

line = (Line()
       .add_xaxis(province)
       .add_yaxis('营业额', data, 
                  markline_opts=opts.MarkLineOpts(data=[opts.MarkLineItem(type_="average")]))
       .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"))
      )

grid = (
        Grid()
        .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%"))
        .add(line, grid_opts=opts.GridOpts(pos_top="60%"))
    )

grid.render_notebook()



10 主题设置


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

# 示例数据
cate = ['Apple''Huawei''Xiaomi''Oppo''Vivo''Meizu']
data1 = [123153891079823]
data2 = [567793684567]
"""
主题设置:
默认white
"""

bar = (Bar(init_opts=opts.InitOpts(theme=ThemeType.ROMANTIC))
       .add_xaxis(cate)
       .add_yaxis('电商渠道', data1)
       .add_yaxis('门店', data2)
       .set_series_opts(label_opts=opts.LabelOpts(is_show=False),
                        markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),]))
       .set_global_opts(title_opts=opts.TitleOpts(title="Theme-ROMANTIC"))
      )

bar.render_notebook()



11 时间轴


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

# 示例数据
cate = ['Apple''Huawei''Xiaomi''Oppo''Vivo''Meizu']
tl = Timeline()
for i in range(20152020):
    bar = (
        Bar()
        .add_xaxis(cate)
        .add_yaxis("线上", [random.randint(50150for _ in cate])
        .add_yaxis("门店", [random.randint(100200for _ in cate])
        .set_global_opts(title_opts=opts.TitleOpts("手机品牌{}年营业额".format(i)))
    )
    tl.add(bar, "{}年".format(i))

tl.render_notebook()








近期文章,点击图片即刻查看

后台回复「进群」,加入读者交流群~

点击积分,了解积分规则~

干货,收藏,点赞!

觉得不够全直接上官方文档

朱小五

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存