标题中的英文首字母大写比较规范,但在python实际使用中均为小写。
2018年8月1日笔记
0.简介
pyecharts是一个用于生成echarts图表的类库。echarts是百度开源的一个数据可视化库,用echarts生成的图可视化效果非常棒。使用pyechart库可以在python中生成echarts数据图。
官网:http://pyecharts.org
Github:https://github.com/pyecharts/pyecharts/
在官网中可以获得比本文更详细的pyecharts库的使用方法。
下面代码的开发环境为jupyter notebook,使用在jupyter notebook中的截图表示运行结果。
1.安装库
打开cmd,在cmd中使用pip命令安装pyecharts库,如下所示:
pip install pyecharts -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
其中-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
是使用阿里云作为下载源,可以极大加快下载速度。
如果安装失败,请在cmd中运行命令:pip install pytest-runner
。然后再次使用pip安装pyecharts库。
2.柱形图
第1行代码引入库,第2行代码初始化1个Bar对象赋值给bar变量。
第3-7行代码准备Bar对象的add方法的3个关键字参数,第1个关键字参数name是图例的名称,第2个关键字参数x_axis是x轴的标记,第3个关键字参数y_axis是每个柱形的高度。
将3个关键字参数打包成1个数据类型为字典的变量kwargs。
kwargs作为参数传入Bar对象的add方法中时,需要使用**kwargs,这样可以使其自动解包,字典中的键值对会对应函数需要的参数。
最后1行,Bar对象的render方法会产生一个html文件,可以用浏览器打开该文件进行查看。
from pyecharts import Bar
bar = Bar('我的第一个图表','这里是副标题')
kwargs = dict(
name = '柱形图',
x_axis = ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子'],
y_axis = [5,20,36,10,75,90]
)
bar.add(**kwargs)
bar.render('bar01.html')
文件夹中生成的bar01.html文件如下图所示:
在浏览器中查看 bar01.html文件如下图所示:
3.直方图
在pyecharts中,直方图也是使用Bar对象画出。
与柱形图的不同之处是实例化Bar对象时多了1个参数bar_category_gap,含义是每个柱子之间的间隔,如果设置为0,则画直方图。
bar = Bar('我的第一个图表','这里是副标题')
kwargs = dict(
name = '柱形图',
x_axis = ['衬衫','羊毛衫','雪纺衫','裤子','高跟鞋','袜子'],
y_axis = [5,20,36,10,75,90],
bar_category_gap = 0
)
bar.add(**kwargs)
bar
4.堆叠柱状图
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫","裤子", "高跟鞋", "袜子"]
y1 =[5, 20, 36, 10, 75, 90]
y2 = [10, 25, 8, 60, 20, 80]
bar = pye.Bar("柱状图数据堆叠示例")
title1 = '商家A'
title2 = '商家B'
bar.add(title1,x,y1,is_stack=True)
bar.add(title2,x,y2,is_stack=True)
bar.render('bar02.html')
上面一段代码的运行结果如下图所示:
5.标记线和标记点示例
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫","裤子", "高跟鞋", "袜子"]
y1 =[5, 20, 36, 10, 75, 90]
y2 = [10, 25, 8, 60, 20, 80]
bar = pye.Bar("标记线和标记点示例")
title1 = '商家A'
title2 = '商家B'
bar.add(title1,x,y1,mark_point=['average'])
bar.add(title2,x,y2,mark_line=['min','max'])
bar.render('bar04.html')
bar
上面一段代码的运行结果如下图所示:
6.条形图
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫","裤子", "高跟鞋", "袜子"]
y1 =[5, 20, 36, 10, 75, 90]
y2 = [10, 25, 8, 60, 20, 80]
bar = pye.Bar("x轴与y轴交换")
title1 = '商家A'
title2 = '商家B'
bar.add(title1,x,y1)
bar.add(title2,x,y2,is_convert=True)
bar.render('bar03.html')
bar
上面一段代码的运行结果如下图所示:
7. 折线图
from pyecharts import Line
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
v1 = [5, 20, 36, 10, 10, 100]
v2 = [55, 60, 16, 20, 15, 80]
line = Line("折线图示例")
line.add("商家A", attr, v1, mark_point=["average"])
line.add("商家B", attr, v2, is_smooth=True,
mark_line=["max", "average"])
line.render('line01.html')
line
上面一段代码的运行结果如下图所示:
8.折线图2
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
y1 = [5, 20, 36, 10, 10, 100]
y2 = [55, 60, 16, 20, 15, 80]
line = pye.Line("折线图示例")
label1 = '商家A'
label2 = '商家B'
kwargs = dict(
mark_point=['average','max','min'],
mark_point_symbol = 'diamond',
mark_point_textcolor = '#40ff27'
)
line.add(label1,x,y1,**kwargs)
kwargs2 = dict(
mark_point=['average','max','min'],
mark_point_symbol = 'arrow',
mark_point_symbolsize = 40
)
line.add(label2,x,y2,**kwargs2)
line
上面一段代码的运行结果如下图所示:
9.面积图
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
y1 = [5, 20, 36, 10, 10, 100]
y2 = [55, 60, 16, 20, 15, 80]
line = pye.Line("面积图示例")
label1 = '商家A'
label2 = '商家B'
kwargs = dict(
if_fill = True,
line_opacity = 0.2,
area_opacity = 0.4,
symbol = None
)
line.add(label1,x,y1,**kwargs)
kwargs2 = dict(
s_fill= True,
area_color= '#000',
area_opacity= 0.3,
is_smooth= True
)
line.add(label2,x,y2,**kwargs2)
line
上面一段代码的运行结果如下图所示:
10.饼图
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
y = [11, 12, 13, 10, 10, 10]
pie = pye.Pie("饼图示例")
pie.add("",x,y,is_label_show=True)
pie
上面一段代码的运行结果如下图所示:
11.饼图2
import pyecharts as pye
x = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
y = [11, 12, 13, 10, 10, 10]
pie = pye.Pie("饼图-圆环图示例",title_pos='center')
kwargs = dict(
radius = (40,75),
label_text_color = None,
is_label_show = True,
legend_orient = 'vertical',
legend_pos = 'left'
)
pie.add("",x,y,**kwargs)
pie
上面一段代码的运行结果如下图所示:
12.散点图
from pyecharts import Scatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2)
scatter
上面一段代码的运行结果如下图所示:
13.散点图2
from pyecharts import Scatter
v1 = [10, 20, 30, 40, 50, 60]
v2 = [10, 20, 30, 40, 50, 60]
scatter = Scatter("散点图示例")
scatter.add("A", v1, v2)
scatter.add("B", v1[::-1], v2, is_visualmap=True,
visual_type='size', visual_range_size=[20,
80])
scatter
上面一段代码的运行结果如下图所示:
14.地图1
from pyecharts import Map
value = [155, 10, 66, 78]
attr = ["福建", "山东", "北京", "上海"]
map = Map("全国地图示例")
map.add("", attr, value, maptype='china')
map
上面一段代码的运行结果如下图所示:
15.地图2
from pyecharts import Map
value = [20, 190, 253, 77, 65]
attr = ['汕头市', '汕尾市', '揭阳市', '阳江市', '肇庆市']
map = Map("广东地图示例", width=1200,
height=600)
map.add("", attr, value, maptype='广东',
is_visualmap=True,
visual_text_color='#000',is_label_show=True)
map
上面一段代码的运行结果如下图所示:
16.词云
from pyecharts import WordCloud
name_list = ['Sam S Club', 'Macys', 'Amy Schumer', 'Jurassic World',
'Charter Communications','Chick Fil A', 'Planet Fitness',
'Pitch Perfect', 'Express','Home', 'Johnny Depp',
'Lena Dunham', 'Lewis Hamilton', 'KXAN', 'Mary EllenMark',
'Farrah Abraham','Rita Ora', 'Serena Williams',
'NCAA baseball tournament','Point Break']
value_list = [10000, 6181, 4386, 4055, 2467, 2244,
1898, 1484, 1112,965, 847, 582, 555,
550, 462, 366, 360, 282, 273, 265]
wordcloud = WordCloud(width=800, height=500)
wordcloud.add("", name, value, word_size_range=[20, 100])
wordcloud
上面一段代码的运行结果如下图所示: