利用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')
上一篇 下一篇

猜你喜欢

热点阅读