pyecharts_1.ipynb
单词: filter 过滤
导入3个包: 形状,设置包,消除警告
数据是可迭代的对象,一 一对应.可是是列表或者租
# 基于python的电子表格
from pyecharts.charts import Bar #条状图
from pyecharts import options as opts #导入设置包
from pyecharts.charts import Line #线图
import warnings
warnings.filterwarnings('ignore')
# filter 过滤
1.全局配置:
set_global_opts(title_opts, legend_opts, toolbox_opts, tooltip_opts, datazoom_opts)
当传入数据series无法显示时可以转化为列表在传进去,pd.tolist()
# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'] # 横坐标数据
data1 = [123,153,89,107,98,23]#设置纵坐标数据
data2 = [56,77,93,68,45,67]#纵坐标
bar = (Bar()
.add_xaxis(cate) #增加x轴
.add_yaxis('电商', data1) #增加y轴
.add_yaxis('门店', data2) #增加y轴
# 全局配置
.set_global_opts(title_opts=opts.TitleOpts(title='手机销售额', subtitle='我是副标题'),#标题
legend_opts=opts.LegendOpts(is_show=True),#图例
toolbox_opts=opts.ToolboxOpts(pos_left='90%',orient = 'vertical'),#工具箱
tooltip_opts = opts.TooltipOpts(is_show=True, background_color='pink'),#提示框
datazoom_opts=opts.DataZoomOpts(is_show=True) # 缩放选项
))
# title_opts 设置标题
#z在jupyter notebook 渲染
bar.render_notebook()
1.全局配置:五个配置
set_global_opts(title_opts, legend_opts, toolbox_opts, tooltip_opts, datazoom_opts)
当传入数据series无法显示时可以转化为列表在传进去,pd.tolist()
"""
全局配置项使用示例:
1. 标题 & 副标题
2. 关闭图例
3. 显示工具箱
"""
# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'] # 横坐标数据
data1 = [123,153,89,107,98,23]#设置纵坐标数据
data2 = [56,77,93,68,45,67]#纵坐标
bar = (Bar()
.add_xaxis(cate) #增加x轴
.add_yaxis('电商', data1) #增加y轴
.add_yaxis('门店', data2) #增加y轴
# 全局配置
.set_global_opts(title_opts=opts.TitleOpts(title='手机销售额', subtitle='我是副标题'),#标题
legend_opts=opts.LegendOpts(is_show=True),#图例
toolbox_opts=opts.ToolboxOpts(pos_left='90%',orient = 'vertical'),#工具箱
tooltip_opts = opts.TooltipOpts(is_show=True, background_color='pink'),#提示框
datazoom_opts=opts.DataZoomOpts(is_show=True) # 缩放选项
))
# title_opts 设置标题
#z在jupyter notebook 渲染
bar.render_notebook()
2.系列配置:
控制图表中的文本,线样式,标记等
系列配置项使用示例:
1. 不显示数值 labelopts=opts.LabelOpts(is_show=False),
2. 标记每个系列的最大值 markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type=”max”, name=”最大值”)])
"""
系列配置项使用示例:
1. 不显示数值 label_opts=opts.LabelOpts(is_show=False),
2. 标记每个系列的最大值 markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值")])
"""
bar=(Bar()
.add_xaxis(cate)
.add_yaxis('电商',data1)
.add_yaxis('门店', data2)
.set_global_opts(title_opts=opts.TitleOpts(title='xx',subtitle='yy'),
legend_opts=opts.LegendOpts(is_show=True),#图例
toolbox_opts=opts.ToolboxOpts(pos_left='90%',orient = 'vertical'),#工具箱
tooltip_opts = opts.TooltipOpts(is_show=True, background_color='pink'),#提示框
datazoom_opts=opts.DataZoomOpts(is_show=True))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=True),文本显示
# 标记点设置 markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max',name='最大值')]),
#标记线设置 markline_opts=opts.MarkLineOpts(data=[opts.MarkPointItem(type_='min',name='最小值')])
)
)
bar.render_notebook()
折线图:
纵坐标里参数:is_smooth=True :折线是否平滑
**
from pyecharts.charts import Line #条状图
from pyecharts import options as opts #导入设置包
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'] # 横坐标数据
data1 = [123,153,89,107,98,23]#设置纵坐标数据
data2 = [56,77,93,68,45,67]#纵坐标
# smooth 平滑的
line=(Line()
.add_xaxis(cate)
.add_yaxis('电商',data1,is_smooth=True)
.add_yaxis('门店', data2,is_smooth=True)
.set_global_opts(title_opts=opts.TitleOpts(title='销量',subtitle='副标题'),
legend_opts=opts.LegendOpts(is_show=True),#图例
toolbox_opts=opts.ToolboxOpts(pos_left='90%',orient = 'vertical'),#工具箱
tooltip_opts = opts.TooltipOpts(is_show=True, background_color='pink'),#提示框
datazoom_opts=opts.DataZoomOpts(is_show=True))
.set_series_opts(
label_opts=opts.LabelOpts(is_show=True),
markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max',name='最大值')]),
markline_opts=opts.MarkLineOpts(data=[opts.MarkPointItem(type_='min',name='最小值')])
)
)
line.render_notebook()
漏斗图:funnel 不需要直角坐标系
from pyecharts.charts import Funnel #漏斗图
from pyecharts import options as opts #导入设置包
cat=['访问','注册','加入购物车','提交订单','付款成功']
data=[20111,13745,6345,3667,2865]
funnel = (Funnel()
.add("用户数",
[z for z in zip(cat, data)],
sort_='descending',
label_opts=opts.LabelOpts(position="inside"))
.set_global_opts(
title_opts=opts.TitleOpts(title="Funnel-基本示例", subtitle="我是副标题"),
legend_opts=opts.LegendOpts(is_show=False),
tooltip_opts = opts.TooltipOpts(is_show=True, background_color='pink'))#提示框)
)
funnel.render_notebook()
饼图:pie 南丁格尔图
饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认为 [50, 50]默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度
rosetype -> str
是否展示成南丁格尔图,通过半径区分数据大小,有’radius’和’area’两种模式。默认为’radius’radius:扇区圆心角展现数据的百分比,半径展现数据的大小area:所有扇区圆心角相同,仅通过半径展现数据大小
from pyecharts.charts import Pie #条状图
from pyecharts import options as opts #导入设置包
cat=['访问','注册','加入购物车','提交订单','付款成功']
data=[20111,13745,6345,3667,2865]
pie=(Pie()
.add("",
[z for z in zip(cat,data)],
radius=['10%','50%'],
rosetype="radius"#area
)
.set_global_opts(
title_opts=opts.TitleOpts(title='pie',subtitle='dd')
)
.set_series_opts(label_opts=opts.LabelOpts(formatter="{bi}:{d}%")))
pie.render_notebook()
地图:map
添加热力图:visualmap_opts
from pyecharts import options as opts
from pyecharts.charts import Map
import random
province=['北京','上海','深圳','吉林','新疆','山西', '河北', '安徽', '河南', '山东','湖南', '四川', '重庆', '黑龙江', '浙江']
data=[[i,random.randint(50,150)] for i in province]
sale_map=(
Map()
.add(
"销量",
data,
maptype="china",
zoom=1
)
.set_global_opts(
title_opts=opts.TitleOpts(title='销售地图',
title_textstyle_opts=opts.TextStyleOpts(color= 'green',font_size=25,padding=50),
pos_left='center'
),
visualmap_opts=opts.VisualMapOpts(max_=200, is_piecewise=True),
legend_opts=opts.LegendOpts(is_show=True)
)
# .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}:{d}%")
# )
)
sale_map.render_notebook()
仪表板:
is_clock_wise=False, 控制仪表板的闭合,
start_angle=40 开始值
from pyecharts import options as opts
from pyecharts.charts import Gauge
gauge=(
Gauge()
.add(
"完成率",
[("",66.6),("",30)],
is_clock_wise=False,
# start_angle=40
)
.set_global_opts(title_opts=opts.TitleOpts(title="Gauge")
)
)
gauge.render_notebook()
时间轴:
生成x轴数据,
构造时间线性: Timeline()
遍历生成年的线图,for i in range (2000,2010):
创建线线/条 图: x轴是数据 ,[random.randint(100,200) for _ in cate]
y轴 列表[ ] 遍历每个x轴数据,使用随机数与x轴数据一一对应.
循环完后将 线图添加到 时间线性里,纳入年份i
from pyecharts.charts import Timeline,Line #条状图
from pyecharts import options as opts #导入设置包
import random
# 示例数据
cate = ['Apple', 'Huawei', 'Xiaomi', 'Oppo', 'Vivo', 'Meizu'] # 横坐标数据
t1=Timeline()
#遍历生成每年的线图
for i in range(2015,2021):
line=(
Line()
.add_xaxis(cate)
.add_yaxis('商品',[random.randint(100,200) for _ in cate])
.add_yaxis('门店',[random.randint(100,200) for _ in cate])
.set_global_opts(title_opts=opts.TitleOpts(title="手机{}年营业额".format(i)),
# toolbox_opts=opts.ToolboxOpts(pos_left='90%',orient = 'vertical')
)
)
t1.add(line,'{}年'.format(i)) #将循环后的线性图添加到里面,并且传入年份
t1.render_notebook()
多图组合:
data=[random.randint(50,150)for _ in province]
from pyecharts import options as opts
from pyecharts.charts import Line, Bar, Grid
import random
city = ['石家庄市','唐山市','秦皇岛市','邯郸市','邢台市','保定市','张家口市','承德市','沧州市','廊坊市','衡水市']
data = [random.randint(100,300) for _ in city]
# 条形图
bar = (Bar()
.add_xaxis(city)
.add_yaxis('营业额', data)
.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
.set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar"))
)
# 线图
line = (Line()
.add_xaxis(city)
.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()