利用echarts实现python数据可视化
2018-06-26 本文已影响157人
Clemente
折线图
#encoding:utf-8
'''
add(
name,x_axis,y_axis,
is_symbol_show = True,
is_smooth = False,
is_stack = False,
is_step = False,
is_fill = False,**kwargs
mark_point_textcolor = 'white' #选标记颜色
mark_point_symbol ='diamond','arrow' #选标记形状
mark_point_symbolsize = 30
)
以下为属性默认值:
is_symbol_show = True, #是否显示标记图形
is_smooth = False, #是否显示平滑曲线
is_stack = False, #是否数据堆叠
is_step = False, #是否是阶梯线
is_fill = False,**kwargs #是否填充曲线区域面积
'''
from pyecharts import Line
line = Line('主标题','副标题') #创建实例
attr = ['数据A','数据B','数据C','数据D','数据E','数据F','数据G']
value1 = [5,28,39,44,101,32,12]
value2 = [15,2,9,85,55,22,32]
line.add('数据A', attr, value1, is_stack = True, is_more_utils = True,mark_point =['average','max','min']) # is_stack = True表示堆叠在一起 , is_more_utils = True 设置右侧工具栏 , mark_point标记数据A的平均值
line.add('数据B', attr, value2,mark_point = ['average','min','max']) # mark_line 标记数据B的最小/最大值
'''
如果需要横向并列图 可在最后的add括号中添加 (---snip---,is_convert = True) 表示X 轴与 Y 轴交换
'''
line.show_config() #调试输出pyecharts的js配置信息
line.render('C:/Users/clemente/Desktop/echarts折线图.html')
条形图
#encoding:utf-8
import random
from pyecharts import Bar
bar = Bar('主标题','副标题')
attr = ['数据A','数据B','数据C','数据D','数据E','数据F','数据G']
value1 = [5,28,39,44,101,32,12]
value2 = [15,2,9,85,55,22,32]
bar.add('数据A', attr, value1, is_stack = True, is_more_utils = True,mark_point =['average']) # is_stack = True表示堆叠在一起 , is_more_utils = True 设置右侧工具栏 , mark_point标记数据A的平均值
bar.add('数据B', attr, value2, is_stack = True,mark_line = ['min','max']) # mark_line 标记数据B的最小/最大值
'''
如果需要横向并列图 可在最后的add括号中添加 (---snip---,is_convert = True) 表示X 轴与 Y 轴交换
'''
bar.show_config() #调试输出pyecharts的js配置信息
bar.render('C:/Users/clemente/Desktop/echarts堆叠柱状图.html')
'''
add参数
add(
name,x_axis,y_axis,
is_stack = False,
bar_category_gap = '20%',**kwargs
)
name -> str #图例名称
x_axis -> list # X轴数据
y_axis -> list # Y轴数据
is_stack -> bool #数据堆叠,同个类目轴上系列配置相同的stack 值可以堆叠放置
bar_category_gap -> int/str #类目轴柱状距离,默认20%
'''
面积图
#encoding:utf-8
'''
add(
name,x_axis,y_axis,
is_symbol_show = True,
is_smooth = False,
is_stack = False,
is_step = False,
is_fill = False,**kwargs
mark_point_textcolor = 'white' #选标记颜色
mark_point_symbol ='diamond','arrow' #选标记形状
mark_point_symbolsize = 30
)
以下为属性默认值:
is_symbol_show = True, #是否显示标记图形
is_smooth = False, #是否显示平滑曲线
is_stack = False, #是否数据堆叠
is_step = False, #是否是阶梯线
is_fill = False,**kwargs #是否填充曲线区域面积
'''
import random
from pyecharts import Line
line = Line('折线面积例图','副标题') #创建实例
attr = ['数据A','数据B','数据C','数据D','数据E','数据F','数据G']
value1 = [100,200,300,233,133,883,553]
value2 = [555,444,333,222,888,50,90]
line.add('数据A', attr, value1, is_fill = True, line_opacity = 0.2, area_opacity = 0.4,symbol = None) # is_stack = True表示堆叠在一起 , is_more_utils = True 设置右侧工具栏 , mark_point标记数据A的平均值
line.add('数据B', attr, value2,is_fill = True,line_color = '#000',area_opacity = 0.3,is_smooth =True) # mark_line 标记数据B的最小/最大值
'''
如果需要横向并列图 可在最后的add括号中添加 (---snip---,is_convert = True) 表示X 轴与 Y 轴交换
'''
line.show_config() #调试输出pyecharts的js配置信息
line.render('C:/Users/clemente/Desktop/echarts面积图.html')
饼状图
#encoding:utf-8
'''
add(name,attr,value,radius = None,center = None,rosetype = None,**kwargs)
attr:属性名称
radius:饼图半径,数组第一项是内径,第二项是外径,默认[0,75,],设置成百分比
center:圆心,数组第一项是X轴,第二项是Y轴,默认[50,50]
rosetype: 是否展示成南丁格尔图,用过半径区分数据大小,radius和area两种模式,默认radius
'''
import random
from pyecharts import Pie
pie1 = Pie('') #创建实例
pie2 = Pie('')
attr = ['数据A','数据B','数据C','数据D','数据E','数据F','数据G']
value1 = [[random.randint(0, 100)] for i in range(7)] #随机产生7个值
value2 = [[random.randint(0, 100)] for i in range(7)]
pie1.add('', attr, value1,is_label_show = True)
pie2.add('', attr, value2,radius=[40,75],is_label_show = True,label_text_color = None,legend_orient ='vertical',legend_pos = 'left') #图例垂直
'''
如果需要横向并列图 可在最后的add括号中添加 (---snip---,is_convert = True) 表示X 轴与 Y 轴交换
'''
pie1.show_config() #调试输出pyecharts的js配置信息
pie2.show_config()
pie1.render('C:/Users/clemente/Desktop/echarts饼图.html')
pie2.render('C:/Users/clemente/Desktop/echarts环形图.html')
地理信息可视化
from pyecharts import Geo
data = [
("海门", 9), ("鄂尔多斯", 120), ("招远", 12), ("舟山", 12), ("齐齐哈尔", 14), ("盐城", 15),
("赤峰", 16), ("青岛", 18), ("乳山", 180), ("金昌", 19), ("泉州", 21), ("莱西", 21),
("日照", 21), ("胶南", 22), ("南通", 23), ("拉萨", 24), ("云浮", 24), ("梅州", 25)]
geo = Geo("全国主要城市空气质量", "data from pm2.5", title_color="#fff",title_pos="center",width=1200, height=600, background_color='#404a59')
attr, value = geo.cast(data)
geo.add("", attr, value, visual_range=[0, 200], visual_text_color="#fff",symbol_size=15, is_visualmap=True)
geo.show_config()
geo.render('C:/Users/clemente/Desktop/echarts地图.html')
词云图
# -*- coding:utf-8 -*-
'''
add(
name,attr,value,
shape = 'circle',
word_gap = 20,
word_size_range = None
rotate_step = 45
)
shape-> list :词云图轮廓(circle,cardioid,diamond,triangle-forward,triangle,pentagon,star)
word_gap -> int 单词间隔 默认 20
word_size_range -> int 单词字体大小范围 默认[12,60]
rotate_step -> int 单词旋转角度,默认45。
'''
import random
from pyecharts import WordCloud
name = [
'Though','the answer','this question',
'may at first','seem to border','on the',
'absurd','reflection','will show','that there',
'is a','good deal','more in','it than meets','the eye'
]
value = [[random.randint(0, 20000)] for i in range(15)] #随机产生15个值
worldcloud = WordCloud(width = 1300,height = 620)
worldcloud.add('',name,value,word_size_range = [20,100])
worldcloud.render('C:/Users/clemente/Desktop/echarts词云图.html')
不同图型叠加
# -*- coding:utf-8 -*-
'''
add(chart,
xaxis_index = 0,
yaxis_index = 0,
is_add_xaxis = False,
is_add_yaxis = False)
属性:
is_add_xaxis / is_add_yaxis 是否新增坐标X/Y 默认 False
'''
from pyecharts import Line,Bar,Overlap
attr = ['A','B','C','D','E','F','G']
value1 = [5,28,39,44,101,32,12]
value2 = [15,2,9,85,55,22,32]
line = Line('bar + line 叠加图') #创建实例
line.add('line', attr, value2,line_width=10)
bar = Bar('')
bar.add('bar', attr, value1)
overlap = Overlap()
overlap.add(line)
overlap.add(bar)
overlap.render('C:/Users/clemente/Desktop/echarts不同图型叠加图.html')