之前的一篇文章介绍了使用Matplotlib实现各种统计图表,Python数据可视化之Matplotlib实现各种图表。这篇文章就介绍使用pyecharts实现各种统计图表。
1、pyecharts介绍
Echarts是一款由百度公司开发的开源数据可视化JS库,pyecharts是一款使用python调用echarts生成数据可视化的类库,可实现柱状图,折线图,饼状图,地图等统计图表。
2、柱状图
适用场合是二维数据集(每个数据点包括两个值x和y),但只有一个维度需要比较,用于显示一段时间内的数据变化或显示各项之间的比较情况。优点:利用柱子的高度,反映数据的差异,肉眼对高度差异很敏感。缺点:只适用中小规模的数据集。
柱状图最基本用法
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] sales=[18888,20023,30989,8873,29876,5409] bar=Bar('水果销售情况') bar.add('',fruits,sales,is_stack=True) (bar.render())frompyechartsimportBar
add()方法用于添加数据。
当要比较不同商家水果销量情况,只需多次调用add()方法:
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] bar=Bar('水果销售情况') bar.add('商家A',fruits,shop1_sales,is_stack=False) shop2_sales=[4888,7023,3989,5873,8876,6409] bar.add('商家B',fruits,shop2_sales,is_stack=False) bar.render()frompyechartsimportBar
如果想在数据叠加显示,只需将is_stack参数设置为True
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] bar=Bar('水果销售情况') bar.add('商家A',fruits,shop1_sales,is_stack=True) shop2_sales=[4888,7023,3989,5873,8876,6409] bar.add('商家B',fruits,shop2_sales,is_stack=True) bar.render()frompyechartsimportBar
下面是柱状图中常用方法和属性介绍:(1)add()方法中根据is_stack可以设定柱形图是否叠加显示(2)is_more_utils=True 参数来设置最右侧工具栏,对生成的图进行更多的操作,如将柱形图更改为折线图等(3)标记的使用:mark_point=['average']标记点,平均值;mark_line=['min','max','average']标记线,最大值、最小值和平均值(4)横向柱形图:is_convert=True,标识交换X轴和Y轴
3、折线图
常用折线图来描绘统计事项总体指标的动态、研究对象间的依存关系以及总体中各部分的分配情况等。
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] shop2_sales=[4888,7023,3989,5873,8876,6409] line=Line('折线图') line.add('商家A',fruits,shop1_sales,mark_point=['max']) line.add('商家B',fruits,shop2_sales,mark_point=['min']) line.show_config() line.render()#普通折线图
line()方法中有个is_smooth的参数,将参数的值设置为True,折线图的线条会以圆滑的趋势变化,不像上图那样以直线的方式变化。
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] shop2_sales=[4888,7023,3989,5873,8876,6409] line=Line('折线图') line.add('商家A',fruits,shop1_sales,mark_point=['max']) line.add('商家B',fruits,shop2_sales,mark_point=['min'],is_smooth=True) line.show_config() line.render()#普通折线图
上图的商家A设置了is_smooth参数的值为True,商家B没有设置is_smooth属性。可以看到商家B的折线是以圆滑的趋势变化的。
最常用的还有阶梯折线图和面积折线图。
阶梯折线图
将line()方法的is_step参数设置为True。
shop2_sales=[4888,7023,3989,5873,8876,6409] line=Line('折线图') line.add('商家B',fruits,shop2_sales,mark_point=['min'],is_step=True) line.show_config() line.render()fruits=['苹果','香蕉','凤梨','桔子','橙','桃子']
面积折线图
shop2_sales=[4888,7023,3989,5873,8876,6409] shop1_sales=[8888,3323,6989,8873,3876,15409] line3=Line("面积折线图") line3.add("商家A",fruits,shop1_sales,is_fill=True,line_opacity=0.2,area_opacity=0.4,symbol=None,mark_point=['max']) line3.add("商家B",fruits,shop2_sales,is_fill=True,area_color='#a3aed5',area_opacity=0.3,is_smooth=True) line3.show_config() line3.render()fruits=['苹果','香蕉','凤梨','桔子','橙','桃子']
柱状图-折线图
在柱状图上显示折线图也是常用的统计图表。需要借助Overlap类实现。
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] shop2_sales=[4888,7023,3989,5873,8876,6409] bar=Bar("柱形图-折线图") bar.add('bar',fruits,shop1_sales) line=Line() line.add('line',fruits,shop2_sales) overlap=Overlap() overlap.add(bar) overlap.add(line) overlap.show_config() overlap.render()frompyechartsimportBar,Line,Overlap
4、饼图
饼图可以比较清楚地反映出部分与部分、部分与整体之间的数量关系.易于显示每组数据相对于总数的大小.而且显现方式直观.
fruits=['苹果','香蕉','凤梨','桔子','橙','桃子'] shop1_sales=[8888,3323,6989,8873,3876,15409] pie=Pie('饼图') pie.add('芝麻饼',fruits,shop1_sales,is_label_show=True) pie.show_config() pie.render()frompyechartsimportPie
玫瑰花样式饼图
pie2.add("商家A",fruits,shop1_sales,center=[25,50],is_random=True,radius=[25,60],rosetype='radius') pie2.add("商家B",fruits,shop2_sales,center=[75,50],is_random=True,radius=[25,60],rosetype='area',is_legend_show=False,is_label_show=True) pie2.show_config() pie2.render()pie2=Pie("饼图-玫瑰图示例",title_pos='center',width=900)
5、散点图
散点图又称散点分布图,是以一个变量为横坐标,另一变量为纵坐标,利用散点(坐标点)的分布形态反映变量统计关系的一种图形。特点是能直观表现出影响因素和预测对象之间的总体关系趋势。
静态散点图
scatter=Scatter("散点图示例") scatter.add("A",shop1_sales,shop2_sales) scatter.add("B",shop1_sales[::-1],shop2_sales) scatter.show_config() scatter.render()frompyechartsimportScatter
动态散点图
v1=[5,20,36,10,10,100] v2=[55,60,16,20,15,80] #动态散点图 es=EffectScatter("动态散点图") #v1x坐标v2y坐标 es.add('苹果',v1,v2) es.show_config() es.render()frompyechartsimportEffectScatter
各种图形动态散点图
es=EffectScatter("动态散点图各种图形") es.add("",[10],[10],symbol_size=20,effect_scale=3.5,effect_period=3,symbol="pin") es.add("",[20],[20],symbol_size=12,effect_scale=4.5,effect_period=4,symbol="rect") es.add("",[30],[30],symbol_size=30,effect_scale=5.5,effect_period=5,symbol="roundRect") es.add("",[40],[40],symbol_size=10,effect_scale=6.5,effect_brushtype='fill',symbol="diamond") es.add("",[50],[50],symbol_size=16,effect_scale=5.5,effect_period=3,symbol="arrow") es.add("",[60],[60],symbol_size=6,effect_scale=2.5,effect_period=3,symbol="triangle") es.show_config() es.render()frompyechartsimportEffectScatter
以上是使用pyecharts实现柱状图、折线图、散点图和饼图的统计图表。
长按下面关注本公众号,获取更多关于Python爬虫、大数据和爬虫的知识