内容是以前的学习笔记,内容不全,主观性较大,部分基础知识未展示。后面有空会逐个图片再简单进行测试介绍。官方放出的示例图非常多,种类丰富
Echarts是一个由百度开源的数据可视化javascript库,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts诞生了。简单地说,pyecharts就是百度开源的一个强大的javascript数据可视化库Echarts的python接口
![](https://img.haomeiwen.com/i22672581/1585ad777bf65caf.png)
(官网的首页实在是太可爱了)
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
网友评论