Python + PyEcharts——資料視覺化
阿新 • • 發佈:2019-02-17
一、第一個PyEcharts圖示
以下示例都是在jupyter notebook環境下執行
1 安裝:
pip install pyecharts
2 引用pyechartsfrom pyecharts import Bar
3 編寫實現柱狀圖
bar = Bar('我的第一個圖示','副標題') bar.add('服裝',['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'],[5,20,36,10,75,90])
4 輸出到.html中進行展示:
bar.render(.././html/bar01.html)
5 新建一個html檔案
程式碼: import
pyecharts from pyecharts import Bar bar = Bar("我的第一個圖表", "這裡是副標題") bar.use_theme('dark') #暗色背景色 bar.add("服裝", #註解==label ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"], #橫座標 [5, 20, 36, 10, 75, 90]) #縱座標bar.render('./picture1.html') #檔案儲存路徑(預設儲存當前檔案路徑)Bar
二、柱形圖/條形圖
Bar.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%
程式碼: from pyecharts import Bar bar = Bar('基本柱狀圖','副標題') bar.add('服裝', ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'], [5,20,36,10,75,90], is_more_utils = True #設定最右側工具欄 ) bar.show_config() #除錯輸出pyecharts的js配置資訊 bar.render('./html/first01.html')
三、堆疊(柱狀)圖
程式碼: from pyecharts import Bar attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,80] bar = Bar('柱狀資訊堆疊圖') bar.add('商家A',attr,v1,is_stack = True) #is_stack = True才表示堆疊在一起 bar.add('商家B',attr,v2,is_stack = True) bar.render('./html/first03.html')
■ 並列(柱形)圖 from pyecharts import Bar attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,80] bar = Bar('標記線和標記示例') bar.add('商家A',attr,v1,mark_point = ['average']) #標記點:商家A的平均值 bar.add('商家B',attr,v2,mark_line = ['min','max']) #標記線:商家B最小/最大值 bar.render('./html/first04.html')
■ 橫向並列(柱形)圖 from pyecharts import Bar attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,80] bar = Bar('X 軸與 Y 軸交換') bar.add('商家A',attr,v1) bar.add('商家B',attr,v2,is_convert = True) # is_convert = True:X 軸與 Y 軸交換 bar.render('./html/first04.html')
四、折線/面積圖
Line.add()方法簽名
add( name,x_axis,y_axis, is_symbol_show = True, is_smooth = False, is_stack = False, is_step = False, is_fill = False,**kwargs ) 以下為屬性預設值: is_symbol_show = True, #是否顯示標記圖形 is_smooth = False, #是否顯示平滑曲線 is_stack = False, #是否資料堆疊 is_step = False, #是否是階梯線 is_fill = False,**kwargs #是否填充曲線區域面積
▶程式碼1: from pyecharts import Line attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,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('./html/first05.html') -------------------------------------------------------------- ▶程式碼2:(定製折線圖) from pyecharts import Line attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,80] line = Line('折線示例圖') line.add('商家A',attr,v1, mark_point = ['average','max','min'], #標註點:平均值,最大值,最小值 mark_point_symbol = 'diamond', #標註點:鑽石形狀 mark_point_textcolor = '#40ff27') #標註點:標註文字顏色 line.add('商家B',attr,v2,mark_point = ['average','max','min'], mark_point_symbol = 'arrow', mark_point_symbolsize = 40) line.render('./html/line01.html')
▶程式碼3:(面積圖) from pyecharts import Line attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] v2 = [10,25,8,60,20,80] line = Line('折線面積示例圖') line.add('商家A',attr,v1,is_fill = True, line_opacity = 0.2, #線條不透明度 area_opacity = 0.4, symbol = None) line.add('商家B',attr,v2,is_fill = True, line_color = '#000', #黑色 area_opacity = 0.3, #填充不透明度 is_smooth = True) line.render('./html/area01.html')
五、餅圖
Pie.add()方法簽名
add(name,attr,value,radius = None,center = None,rosetype = None,**kwargs) attr:屬性名稱 radius:餅圖半徑,陣列第一項是內徑,第二項是外徑,預設[0,75,],設定成百分比 center:圓心,陣列第一項是X軸,第二項是Y軸,預設[50,50] rosetype: 是否展示成南丁格爾圖,用過半徑區分資料大小,radius和area兩種模式,預設radius
▶程式碼1:(餅圖) from pyecharts import Pie attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] pie = Pie('餅圖示例') pie.add('',attr,v1,is_label_show = True) pie.render('./html/pie01.html') ▶程式碼2:(環形圖) from pyecharts import Pie attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,75,90] pie = Pie('餅圖-環形圖示例',title_pos = 'center') pie.add( '',attr,v1, #'':圖例名(不使用圖例) radius = [40,75], #環形內外圓的半徑 is_label_show = True, #是否顯示標籤 label_text_color = None, #標籤顏色 legend_orient = 'vertical', #圖例垂直 legend_pos = 'left' ) pie.render('./html/pie02.html')
六、散點圖
Scatter.add()方法簽名
add(name,x_axis,y_axis,extra_data = None,symbol_size = 10,**kwargs) extra_data -> int:第三維資料(可在 visualmap 中將檢視元素對映到第三維度) symbol_size -> int: 標記圖形大小,預設為10
▶程式碼1: from pyecharts import Scatter v1 = [5,20,35,50,65,80] v2 = [10,20,30,40,50,60] scatter = Scatter('散點示例圖') scatter.add('A',v1,v2) scatter.add('B',v1[::-1],v2) #v1[::-1]代表切片倒序 scatter.render('./html/scatter01.html') ▶程式碼2:(引入第三維/類似氣泡圖) from pyecharts import Scatter v1 = [5,20,35,50,65,80] v2 = [10,20,30,40,50,60] scatter = Scatter('散點-氣泡示例圖') scatter.add('A',v1,v2) scatter.add('B',v1[::-1],v2, #v1[::-1]代表切片倒序 is_visualmap = True, #顯示滑動條 symbol_size = 30, #顯示圖內標點大小 vasual_range_size = [20,80]) #顯示滑動範圍 scatter.render('./html/scatter02.html')
Map.add() 方法簽名
安裝下列地圖資料包 pip install echarts-countries-pypkg pip install echarts-china-provinces-pypkg pip install echarts-china-cities-pypkg pip install echarts-china-counties-pypkg pip install echarts-china-misc-pypkg pip install echarts-united-kingdom-pypkg
add( name,attr,value, maptype = 'china', is_roam = True, is_map_symobol_show = True **kwargs ) maptype -> str: 地圖型別,支援China,world,北京,天津,上海,湖南,湖北,……363個二線城市 is_roam -> bool/str 是否開啟滑鼠縮放,漫遊等,預設 True, 若只想開啟縮放/平移 設定scale/move 設定成 True 開啟 is is_map_symobol_show 是否顯示地圖示記,預設 True。
▶程式碼1: from pyecharts import Map value = [155,10,66,78] attr = ['福建','山東','北京','上海'] map = Map('全國地圖示例',width = 1200,height = 600) map.add('',attr,value,maptype = 'china') map.render('./html/map01.html') ▶程式碼2: from pyecharts import Map value = [155,10,66,78] attr = ['汕頭市','汕尾市','揭陽市','肇慶市'] map = Map('廣東地圖示例',width = 1200,height = 600) map.add('',attr,value,maptype = '廣東', is_visualmap = True, visual_text_color = '#000', is_label_show = True ) map.render('./html/map02.html')
八、詞雲圖
WordCloud.add() 方法簽名
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。
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 = [10000,6189,4556,2356,2233, 1895,1456,1255,981,875, 542,462,361,265,125] worldcloud = WordCloud(width = 1300,height = 620) worldcloud.add('',name,value,word_size_range = [20,100]) worldcloud.render('./html/worldcloud01.html')
九、圖示疊加 Overlap
自定義結合
Line/ Bar/ Kline/ Scatter/ EffectScatter
等圖表。
利用第一張圖表為基礎,將後面的資料畫在第一張圖上。Overlap.add() 方法簽名
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
▶程式碼1:bar + line 疊加 from pyecharts import Bar,Line,Overlap attr = ['A','B','C','D','E','F'] v1 = [10,20,30,40,50,60] v2 = [38,28,35,58,65,70] bar = Bar('Line - Bar示例') bar.add('bar',attr,v1) line = Line() line.add('line',attr,v2) overlop = Overlap() overlop.add(bar) overlop.add(line) overlop.render('./html/line-bar01.html')
▶程式碼2:EffectScatter + Line 疊加 from pyecharts import Line,EffectScatter,Overlap attr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'] v1 = [5,20,36,10,10,90] line = Line('線性_閃爍圖示例') line.add('',attr,v1,is_random = True) es = EffectScatter() es.add('',attr,v1,effect_scale=8) #閃爍 overlop = Overlap() overlop.add(line) #必須先新增line,在新增es overlop.add(es) overlop.render('./html/line-es01.html')