美文网首页
[Python] Pyecharts相关知识

[Python] Pyecharts相关知识

作者: 半为花间酒 | 来源:发表于2020-05-19 23:09 被阅读0次

内容是以前的学习笔记,内容不全,主观性较大,部分基础知识未展示。后面有空会逐个图片再简单进行测试介绍。官方放出的示例图非常多,种类丰富

官方文档: http://pyecharts.org/#/zh-cn/intro

Echarts是一个由百度开源的数据可视化javascript库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生了。简单地说,pyecharts就是百度开源的一个强大的javascript数据可视化库Echarts的python接口

(官网的首页实在是太可爱了)

Pyecharts

# pyecharts 绘图流程

"""
chart_name = 图标类型()
chart_name.add_xaxis(x轴标签列表) # 添加横坐标名称
chart_name.add_yaxis(名称,y轴数据列表) # 添加纵坐标数据
chart_name.render() # 渲染生成HTML
"""

from pyecharts.charts import Bar
from pyecharts.faker import Faker  # 创建随机数据
from pyecharts import options as opts  # 图标设置

# 绘图
bar = Bar()
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家', [92, 134, 141, 96, 54, 59, 117])
bar.set_global_opts(title_opts=opts.TitleOpts(title='Bar-主标题',
                                              subtitle='Bar-副标题'))
bar.render()
# 必须是list类型,numpy和pandas类型的数字

bar = Bar()
bar.add_xaxis(Faker.choose()) # 生成7个随机数据
bar.add_yaxis('商家', Faker.values())
bar.render()

# 切换主题颜色
from pyecharts.globals import ThemeType
# bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
# bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家', [92, 134, 141, 96, 54, 59, 117])
bar.set_global_opts(title_opts=opts.TitleOpts(title='Bar-主标题',
                                              subtitle='Bar-副标题'))
bar.render()

# 更改图标尺寸
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE,
                                  width='1920px',
                                  height='1080px')) # 高清风格
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家', [92, 134, 141, 96, 54, 59, 117])
bar.set_global_opts(title_opts=opts.TitleOpts(title='Bar-主标题',
                                              subtitle='Bar-副标题'))
bar.render()

# 旋转x轴标签
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE,
                                  width='1920px',
                                  height='1080px'))
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家', [92, 134, 141, 96, 54, 59, 117])
bar.set_global_opts(
    title_opts=opts.TitleOpts(
        title='Bar-主标题',
        subtitle='Bar-副标题'),
    xaxis_opts=opts.AxisOpts(
        axislabel_opts=opts.LabelOpts(rotate=30)))
bar.render()

# 多组数据堆叠
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)) # 高清风格
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家A', Faker.values(), stack='stack1')
bar.add_yaxis('商家B', Faker.values(), stack='stack1') # 如果不标注stack则为正常分组
bar.set_global_opts(title_opts=opts.TitleOpts(title='Bar-主标题',
                                              subtitle='Bar-副标题'))
bar.render()
# 两两堆叠
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家A', Faker.values(), stack='stack1')
bar.add_yaxis('商家B', Faker.values(), stack='stack1')
bar.add_yaxis('商家C', Faker.values(), stack='stack2')
bar.add_yaxis('商家D', Faker.values(), stack='stack2')
bar.set_global_opts(
    title_opts=opts.TitleOpts(title='Bar-主标题',
                              subtitle='Bar-副标题'))
bar.render()

# 标记点和线
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE)) # 高清风格
bar.add_xaxis(['衬衫', '毛衣', '领带', '裤子', '风衣', '高跟鞋', '袜子'])
bar.add_yaxis('商家A', Faker.values(), stack='stack1')
bar.add_yaxis('商家B', Faker.values(), stack='stack1') # 如果不标注stack则为正常分组
bar.set_global_opts(
    title_opts=opts.TitleOpts(title='Bar-主标题',
                              subtitle='Bar-副标题'))
bar.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False), # 不显示柱形上的数字
    markpoint_opts=opts.MarkPointOpts(
        data=[
            opts.MarkPointItem(type_='max', name='Max'),
            opts.MarkPointItem(type_='min', name='Min'),
        ]
    ),
    markline_opts=opts.MarkLineOpts(
        data=[
            opts.MarkLineItem(type_='average', name='Average'),
        ]
    ),
)
bar.reversal_axis() # 行列转置
bar.render()

# 添加窗口滑块
from pyecharts.charts import Bar
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.globals import ThemeType
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
bar.add_xaxis(Faker.days_attrs)
bar.add_yaxis('商家', Faker.days_values)
bar.set_global_opts(
    title_opts=opts.TitleOpts(
        title='Bar-主标题',
        subtitle='Bar-副标题'),
    datazoom_opts=[opts.DataZoomOpts()] # 添加滑块效果
)
bar.render()

# 创建3D柱状图
from pyecharts.charts import Bar3D
import random
data = [(i, j, random.randint(0,12))
        for i in range(24)
        for j in range(6)] # 构建数据
bar3D = Bar3D()
bar3D.add(
    'Chenxi', # 名称
    data,
    xaxis3d_opts=opts.Axis3DOpts(Faker.clock, type_='category'),
    yaxis3d_opts=opts.Axis3DOpts(Faker.week_en, type_='category'),
    zaxis3d_opts=opts.Axis3DOpts(type_='value'), # z轴设置为数据
)
bar3D.set_global_opts(
    visualmap_opts=opts.VisualMapOpts(max_=20),
    title_opts=opts.TitleOpts(title='Bar3D-基本示例')
)
bar3D.render()

# 创建折线图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Line
from pyecharts.globals import ThemeType

line = Line(init_opts=opts.InitOpts(theme=ThemeType.VINTAGE))
line.add_xaxis(Faker.choose())
line.add_yaxis('商家A', Faker.values(),
               is_smooth=True, # 折线平滑选项,默认为False
               areastyle_opts=opts.AreaStyleOpts( # 填充折线下的面积
                   opacity=0.2, # 填充透明度
                   color='steelblue'
               ))
color_gra= {
    'type': 'linear',
    'x': 0,
    'y': 0,
    'x2': 0,
    'y2': 1,
    'colorStops': [{
        'offset': 0, 'color': 'green'
    }, {
        'offset': 1, 'color': 'red'
    }]
}
line.add_yaxis('商家B', Faker.values(),
areastyle_opts=opts.AreaStyleOpts(
                   opacity=0.2,
                   color=color_gra # 设置渐变
               ))
line.set_global_opts(
    title_opts=opts.TitleOpts(title='Line-基本示例')
)
line.render()


# 创建饼图(环状图 玫瑰饼图)
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Pie

pie = Pie()
pie.add('',  # 名称
        [list(z) for z in zip(Faker.choose(), Faker.values())],
        radius=['40%', '75%'], # 若不指名则为饼图
        rosetype='area', # 圆心角相同 通过半径呈现数据 玫瑰图
        )
# 数据项为 [(key1, value1), (key2, value2)]
pie.set_global_opts(
    title_opts=opts.TitleOpts(
        title='Pie-基本视图'
    )
)
pie.set_series_opts(
    label_opts=opts.LabelOpts(
        formatter='{b}:{c}'  # 确定出现的数据显示的格式
    )
)
pie.render()

# 涟漪效果散点图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import EffectScatter
from pyecharts.globals import SymbolType

EF = EffectScatter()
EF.add_xaxis(Faker.choose())
EF.add_yaxis(
    '',
    Faker.values(),
    symbol=SymbolType.ARROW)
EF.set_global_opts(
    title_opts=opts.TitleOpts(
        title='EffectScatter-基本图示'
    )
)
EF.render()


# 漏斗图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Funnel

funnel = Funnel()
funnel.add(
    '用户转化率',
    [list(z) for z in zip(Faker.choose(), Faker.values())],
    label_opts=opts.LabelOpts(position='inside') # 把标签放于图内
)
funnel.set_global_opts(
    title_opts=opts.TitleOpts(
        title='Funnel-基本视图'
    )
)
funnel.render()

# 地理坐标图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Geo

geo = Geo()
geo.add_schema(maptype='china')
geo.add('geo', [list(z) for z in zip(Faker.provinces, Faker.values())])
geo.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False)
)
geo.set_global_opts(
    visualmap_opts=opts.VisualMapOpts(),
    title_opts=opts.TitleOpts(title='Geo-基本示例')
)
geo.render()

# 水球图
from pyecharts.charts import Liquid
import pyecharts.options as opts
liquid = Liquid()
liquid.add('Liquid',
           [0.7, 0.6, 0.5],
           is_animation=True, # 是否会动
           is_outline_show=True)  # 是否显示外边框
# 还可以自定义shape,需要svg图path://..
# http://www.iconfont.cn下载svg格式,打开后寻找path复制
liquid.set_global_opts(
    title_opts=opts.TitleOpts(title='Liquid-基本示例'))
liquid.render()

# 雷达图
import pyecharts.options as opts
from pyecharts.faker import Faker
from pyecharts.charts import Radar
v1 = [
    [4300, 10000, 28000, 35000, 5000, 19000],
    [3300, 13000, 25000, 3000, 48000, 24000]
]
v2 = [[5000, 14000, 28000, 31000, 42000, 21000]]
rader = Radar()
rader.add_schema(
    schema=[
        opts.RadarIndicatorItem(name='销售', max_=6500),
        opts.RadarIndicatorItem(name='管理', max_=16000),
        opts.RadarIndicatorItem(name='信息技术', max_=30000),
        opts.RadarIndicatorItem(name='客服', max_=38000),
        opts.RadarIndicatorItem(name='研发', max_=52000),
        opts.RadarIndicatorItem(name='市场', max_=25000),
    ]
)
rader.add('预算分配', v1)
rader.add('实际开销', v2)
rader.set_series_opts(
    label_opts=opts.LabelOpts(is_show=False)
)
rader.set_global_opts(
    title_opts=opts.TitleOpts(title='Rader-基本示例')
)
rader.render()

# chart.xkcd cutecharts Q版风格
# https://github.com/chenjiandongx/cutecharts

相关文章

网友评论

      本文标题:[Python] Pyecharts相关知识

      本文链接:https://www.haomeiwen.com/subject/kjhwohtx.html