一、pyecharts 简述
Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。
官网https://pyecharts.org/#/
1.pyecharts的特点
1.与Echarts结合
2.与Web端结合
3.超强交互性
4.国人开发的项目
2.安装 pyecharts
Windows系统:
pip install pyecharts_jupyter_installer
pip install pyecharts_snapshot
pip install pyecharts
Mac系统:
pip3 install pyecharts_jupyter_installer
pip3 install pyecharts_snapshot
pip3 install pyecharts
3.图表绘制流程
1.chart_name=图表类型() #初始化具体类型图表
2.chart_name.add_xaxis() #添加横坐标名称
3.chart_name.add_yaxis() #添加纵坐标数据
4.chart_name.render() #生成.html文件
二、pyechart的使用
1.新建一个Python文件
导入pyecharts模块及随机虚构数据模块
#创建虚构的随机数据(以便于练习绘图,如自有数据 可不创建):
from pyecharts.faker import Faker
#导入主题类型包
from pyecharts.globals import ThemeType
#生成图表的配置
from pyecharts import options as opts
#导入图表类型 这里是Bar图(柱状图)
from pyecharts.charts import Bar
2.绘制Bar图(柱状图/条形图)
#创建一个bar图
bar= Bar()
#添加数据
#add_xaxis(X轴标签列表)
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
#add_yaxis(名称,Y轴数据列表)
bar.add_yaxis("商家A",[82,84,125,23,45,130,117])
#生0成HTML文件(图表在HTML上)
bar.render_notebook()
运行Python程序后会在同目录下生成一个render.html文件
注意数据必须是python的list/列表类型,如果是numpy的数组需要转换成list
#添加虚构数据语法
bar.add_xaxis(Faker.choose())
bar.add_yaxis('商家A',Faker.values())
(1).添加图标大标题,副标题
set_global_opts
例如:
bar.set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例",subtitle="我是副标题"))
#添加标题和副标题
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-基本示例",subtitle="我是副标题"))
bar.render_notebook()
(2).切换主题颜色
- 导入主题类型包
from pyecharts.globals import ThemeType
- 添加主题类型:
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
#在Bar()函数中添加主题类型:此处为紫色主题,需在导入数据前加入
bar = Bar(init_opts=opts.InitOpts(theme=ThemeType.PURPLE_PASSION))
#添加数据
#add_xaxis(X轴标签列表)
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
#add_yaxis(名称,Y轴数据列表)
bar.add_yaxis("商家A",[82,84,125,23,45,130,117])
#添加标题和副标题
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-基本示例",subtitle="我是副标题"))
bar.render_notebook()
(3)更改图片尺寸
wight:修改图片宽度
height:修改图片高度
只需将参数wight和height加入到Bar()函数里面,格式如下:
bar=Bar(init_opts=opts.InitOpts(
theme=ThemeType.PURPLE_PASSION,
width="1920px",
height='1080px'))
#在Bar()函数中设置主题类型,尺寸
bar = Bar(init_opts=opts.InitOpts(
theme=ThemeType.PURPLE_PASSION,
width="725px",
height='689px'))
#添加数据
#add_xaxis(X轴标签列表)
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
#add_yaxis(名称,Y轴数据列表)
bar.add_yaxis("商家A",[82,84,125,23,45,130,117])
#添加标题和副标题
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-基本示例",subtitle="我是副标题"))
bar.render_notebook()
(4).旋转X轴标签
rotate参数:rotate=旋转角度(-90~90之间)
例如:
bar.set_global_opts(
title_opts=opts.TitleOpts(
title="Bar-基本示例",
subtitle="我是副标题"
),
xaxis_opts=opts.AxisOpts(
axislabel_opts.LabelOpts(rotate=30)
)
)
bar = Bar(init_opts=opts.InitOpts(
theme=ThemeType.PURPLE_PASSION,
width="725px",
height='689px'))
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
bar.add_yaxis("商家A",[82,84,125,23,45,130,117],stack='stack1')
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-憨娃",
subtitle="我是副标题"),
xaxis_opts=opts.AxisOpts(
axislabel_opts=opts.LabelOpts(rotate=45)))
bar.render_notebook()
(5)柱状图堆叠
在上面的y轴函数中加入stack参数
示例格式:
bar.add_yaxis('分类1',[数据],stack='stack1')
bar.add_yaxis('分类2',[数据],stack='stack1')
bar.add_yaxis('分类3',[数据],stack='stack2')
bar.add_yaxis('分类4',[数据],stack='stack2')
stack='stack1',表示两组数据堆叠在stack1(名字可改)这一组里
stack='stack2',表示两组数据堆叠在
ack2(名字可改)这一组里
bar.add_yaxis('商家B',[66,84,97,130,150,12,130],stack='stack1')
bar.render_notebook()
#两两堆叠
bar.add_yaxis('商家C',[45,54,101,67,45,122,48],stack='stack2')
bar.add_yaxis('商家D',[65,54,74,78,99,54,29],stack='stack2')
bar.render_notebook()
(6).柱状图标记点
bar.set_series_opts(
label_opts=opts.LabelOpts(is_show=False), ##此行为是否显示数组,is_show=False表示不显示数字
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_='max',name='最大值'),
opts.MarkPointItem(type_='min',name='最大值'),
opts.MarkPointItem(type_='average',name='平均值'),
]
),
)
bar.set_series_opts(
label_opts=opts.LabelOpts(is_show=False),#此行为是否显示数组,is_show=True表示显示数字
markpoint_opts=opts.MarkPointOpts(
data=[
opts.MarkPointItem(type_='max',name='最大值'),
opts.MarkPointItem(type_='min',name='最大值'),
opts.MarkPointItem(type_='average',name='平均值'),
]
),
)
bar.render_notebook()
(7).柱状图标记线
bar.set_series_opts(
label_opts=opts.LabelOpts(is_show=False), ##此行为是否显示数组,is_show=False表示不显示数字
markline_opts=opts.MarkPointOpts( #线就是吧point换成line
data=[
opts.MarkPointItem(type_='max',name='最大值'),
opts.MarkPointItem(type_='min',name='最大值'),
opts.MarkPointItem(type_='average',name='平均值'),
]
),
)
bar.set_series_opts(
label_opts=opts.LabelOpts(is_show=True), ##此行为是否显示数组,is_show=False表示不显示数字
markline_opts=opts.MarkPointOpts( #线就是吧point换成line
data=[
opts.MarkPointItem(type_='average',name='平均值'),
]
),
)
bar.render_notebook()
(8).柱状图X轴和Y轴交换
格式:
bar.reversal_axis()
#X轴和Y轴交换
bar.reversal_axis()
bar.render_notebook()
柱状图带窗口滑块效果
在set_global_opts中添加参数datazoom_opts=[opts.DataZoomOpts()]:
bar.set.global_opts(
title_opts=opts.TitleOpts(
title="Bar-基本示例",
subtitle="我是副标题"
),
datazoom_opts=[opts.DataZoomOpts()]
)
```python
bar = Bar(init_opts=opts.InitOpts(
theme=ThemeType.PURPLE_PASSION,
width="725px",
height='689px'))
bar.add_xaxis(['衬衫','毛衣','领带','裤子','风衣','高跟鞋','袜子'])
bar.add_yaxis("商家A",[82,84,125,23,45,130,117],stack='stack1')
bar.set_global_opts(title_opts=opts.TitleOpts(
title="Bar-憨娃",
subtitle="我是副标题"),
datazoom_opts=[opts.DataZoomOpts()]) #添加滑块效果
bar.render_notebook()