[Python] Pyecharts相关知识

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

官方文档: 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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355