参考pyechart文档:http://pyecharts.org/#/zh-cn/
命令行内输入
pip install pyecharts
如果想直接将图片保存为 png, pdf, gif 格式的文件,可以使用 pyecharts-snapshot。
pip 安装
pip install pyecharts_snapshot
图表类提供了若干了构建和渲染的方法,在使用的过程中,建议按照以下的顺序分别调用:
步骤 | 描述 | 代码示例 |
---|---|---|
1 | 实例一个具体类型图表的对象 | chart = FooChart() |
2 | 为图表添加通用的配置,如主题 | chart.use_theme() |
3 | 为图表添加特定的配置 | geo.add_coordinate() |
4 | 添加数据及配置项 | chart.add() |
5 | 生成本地文件 | (html/svg/jpeg/png/pdf/gif) |
1.1 单属性柱状图
# 柱状图
from pyecharts import Bar #导入相应包
name_list = ["苹果","梨子","香蕉","葡萄"]#柱状图属性名称
value_list = [15,25,5,10]#属性值
bar = Bar(title = "水果数量")#生成对象,title为柱状图标题
bar.add("水果",name_list,value_list)#将数据加入柱状图中
bar.render('bar.html')#保存为HTML格式,也可保存为jpg,png,gif等
1.2 多属性柱状图
# 多属性柱状图
from pyecharts import Bar #导入相应包
name_list = ["苹果","梨子","香蕉","葡萄"]#柱状图属性名称
value_list0 = [15,25,5,10]#属性值0
value_list1 = [5,10,15,20]#属性值1
value_list2 = [20,5,30,15]#属性值2
bar = Bar(title = "水果数量")#生成对象,title为柱状图标题
bar.add("商家0",name_list,value_list0)#将数据加入柱状图中
bar.add("商家1",name_list,value_list1)#将数据加入柱状图中
bar.add("商家2",name_list,value_list2)#将数据加入柱状图中
bar.render('bar.html')#保存为HTML格式,也可保存为jpg,png,gif等
# 堆叠柱状图
from pyecharts import Bar #导入相应包
name_list = ["苹果","梨子","香蕉","葡萄"]#柱状图属性名称
value_list0 = [15,25,5,10]#属性值0
value_list1 = [5,10,15,20]#属性值1
value_list2 = [20,5,30,15]#属性值2
bar = Bar(title = "水果数量")#生成对象,title为柱状图标题
#is_stack=True表示将数据堆叠,is_label_show=True表示显示对应数值
bar.add("商家0",name_list,value_list0,is_stack=True,is_label_show=True)
bar.add("商家1",name_list,value_list1,is_stack=True,is_label_show=True)
bar.add("商家2",name_list,value_list2,is_stack=True,is_label_show=True)
bar.render('bar.html')#保存为HTML格式,也可保存为jpg,png,gif等
#X,Y轴交换
from pyecharts import Bar #导入相应包
name_list = ["苹果","梨子","香蕉","葡萄"]#柱状图属性名称
value_list0 = [15,25,5,10]#属性值0
value_list1 = [5,10,15,20]#属性值1
value_list2 = [20,5,30,15]#属性值2
bar = Bar(title = "水果数量")#生成对象,title为柱状图标题
bar.add("商家0",name_list,value_list0,is_label_show=True)
bar.add("商家1",name_list,value_list1,is_label_show=True)
bar.add("商家2",name_list,value_list2,is_label_show=True,is_convert=True)
#is_convert=True,xy轴交换
bar.render('bar.html')#保存为HTML格式,也可保存为jpg,png,gif等
from pyecharts import Bar, Timeline#Timeline展示时间线的包
from random import randint
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
#图1
bar_1 = Bar("2012 年销量", "数据纯属虚构")
bar_1.add("春季", attr, [randint(10, 100) for _ in range(6)])
bar_1.add("夏季", attr, [randint(10, 100) for _ in range(6)])
bar_1.add("秋季", attr, [randint(10, 100) for _ in range(6)])
bar_1.add("冬季", attr, [randint(10, 100) for _ in range(6)])
#图2
bar_2 = Bar("2013 年销量", "数据纯属虚构")
bar_2.add("春季", attr, [randint(10, 100) for _ in range(6)])
bar_2.add("夏季", attr, [randint(10, 100) for _ in range(6)])
bar_2.add("秋季", attr, [randint(10, 100) for _ in range(6)])
bar_2.add("冬季", attr, [randint(10, 100) for _ in range(6)])
#图3
bar_3 = Bar("2014 年销量", "数据纯属虚构")
bar_3.add("春季", attr, [randint(10, 100) for _ in range(6)])
bar_3.add("夏季", attr, [randint(10, 100) for _ in range(6)])
bar_3.add("秋季", attr, [randint(10, 100) for _ in range(6)])
bar_3.add("冬季", attr, [randint(10, 100) for _ in range(6)])
#图4
bar_4 = Bar("2015 年销量", "数据纯属虚构")
bar_4.add("春季", attr, [randint(10, 100) for _ in range(6)])
bar_4.add("夏季", attr, [randint(10, 100) for _ in range(6)])
bar_4.add("秋季", attr, [randint(10, 100) for _ in range(6)])
bar_4.add("冬季", attr, [randint(10, 100) for _ in range(6)])
#图5
bar_5 = Bar("2016 年销量", "数据纯属虚构")
bar_5.add("春季", attr, [randint(10, 100) for _ in range(6)])
bar_5.add("夏季", attr, [randint(10, 100) for _ in range(6)])
bar_5.add("秋季", attr, [randint(10, 100) for _ in range(6)])
bar_5.add("冬季", attr, [randint(10, 100) for _ in range(6)], is_legend_show=True)
#将上面的图按时间点加入时间线
timeline = Timeline(is_auto_play=True, timeline_bottom=0)
timeline.add(bar_1, '2012 年')
timeline.add(bar_2, '2013 年')
timeline.add(bar_3, '2014 年')
timeline.add(bar_4, '2015 年')
timeline.add(bar_5, '2016 年')
timeline.render('销量.html')
2.1 折线图
# 折线图
from pyecharts import Line #导入相应包
name_list = ["苹果","梨子","香蕉","葡萄"]#属性名称
value_list0 = [15,25,5,10]#属性值0
value_list1 = [5,10,15,20]#属性值1
value_list2 = [20,5,30,15]#属性值2
line = Line(title = "水果数量")#生成对象,title为标题
line.add("商家0",name_list,value_list0,is_stack=True,is_label_show=True)#将数据加入图中
line.add("商家1",name_list,value_list1,is_stack=True,is_label_show=True)#将数据加入图中
line.add("商家2",name_list,value_list2,is_stack=True,is_label_show=True)#将数据加入图中
line.render('line.html')#保存为HTML格式,也可保存为jpg,png,gif等
# 将柱状图和折线图放在一个图中
from pyecharts import Bar, Line ,Overlap
name_list = ["苹果","梨子","香蕉","葡萄"]#属性名称
value_list0 = [15,25,5,10]#属性值0
value_list1 = [5,10,15,20]#属性值1
bar = Bar(title = "水果销量")
line = Line()
bar.add("商家0",name_list,value_list0,mark_line =["average"] ,mark_point=["max","min"],is_label_show=True)#将数据加入图中
bar.add("商家1",name_list,value_list1,mark_line =["average"] ,mark_point=["max","min"],is_label_show=True)#将数据加入图中
line.add("商家0",name_list,value_list0,is_smooth = True)#将数据加入图中
line.add("商家1",name_list,value_list1)#将数据加入图中
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
overlap.render('overlap.html')
mark_line =[“average”] :显示平均线
mark_point=[“max”,“min”]:标记最值点
is_label_show=True:显示数值
is_smooth = True:平滑曲线
3.1 饼状图
add函数的一些参数:
name:系列名称,用于 tooltip 的显示,legend 的图例筛选。
attr:属性名称。
value:属性所对应的值。
radius:饼图的半径,数组的第一项是内半径,第二项是外半径,默认为 [0, 75]
默认设置成百分比,相对于容器高宽中较小的一项的一半。
center:饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标,默认为 [50, 50]。默认设置成百分比,设置成百分比时第一项是相对于容器宽度,第二项是相对于容器高度。
rosetype:是否展示成南丁格尔图,通过半径区分数据大小有’radius’和’area’两种模式。 默认为’radius’。
radius:扇区圆心角展现数据的百分比,半径展现数据的大小。
area:所有扇区圆心角相同,仅通过半径展现数据大小。
# 饼图
from pyecharts import Pie
attr = ["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]
value1 = [10,15,5,20,8,18]
value2 = [10,11,12,13,14,15]
pie = Pie(title='饼状图')
#饼图1圆心坐标为[25,50],内外半径radius=[10,75],is_random = True颜色随机
pie.add('商家1',attr,value1,center=[25,50],is_random = True,radius=[10,75],is_legend_show = True)#,rosetype = 'radius',is_label_show = False)
#饼图1圆心坐标为[75,50],内外半径radius=[0,75],展示成南丁格尔图
pie.add('商家2',attr,value2,center=[75,50],is_random = True,radius=[0,75],rosetype = 'area',is_legend_show = True,is_label_show = True)
pie.render('饼图.html')
# 词云
from pyecharts import WordCloud
name_list = ['无人驾驶', '人工智能', '区块链 ', '图灵测试', '回归分析','MapReduce','贪心算法','数据挖掘','数据可视化','分布式计算']
value_list = [60,90,80,70,60,50,60,70,80,90]
wordcloud = WordCloud(title='词云',width=1200, height=750)
wordcloud.add("大数据",name_list, value_list,word_size_range=[50, 100])
wordcloud.render('ciyun.html')