Echarts 是一個由百度開源的資料可視化,憑借着良好的互動性,精巧的圖表設計,得到了衆多開發者的認可。而 Python 是一門富有表達力的語言,很适合用于資料處理。當資料分析遇上資料可視化時,pyecharts 誕生了。
特性
- 簡潔的 API 設計,使用如絲滑般流暢,支援鍊式調用
- 囊括了 30+ 種常見圖表,應有盡有
- 支援主流 Notebook 環境,Jupyter Notebook 和 JupyterLab
- 可輕松內建至 Flask,Sanic,Django 等主流 Web 架構
- 高度靈活的配置項,可輕松搭配出精美的圖表
- 詳細的文檔和示例,幫助開發者更快的上手項目
- 多達 400+ 地圖檔案,并且支援原生百度地圖,為地理資料可視化提供強有力的支援
pip 安裝
# 安裝 v1 以上版本
$ pip install pyecharts -U# 如果需要安裝 0.5.11 版本的開發者,可以使用# pip install pyecharts==0.5.11
柱形圖/條形圖
import pyechartsfrom pyecharts import Barbar = Bar("我的第一個圖表", "這裡是副标題")bar.use_theme('dark') #暗色背景色bar.add("服裝", #注解==label ["襯衫","羊毛衫","雪紡衫","褲子","高跟鞋","襪子"], #橫坐标 [5, 20, 36, 10, 75, 90]) #縱坐标
from pyecharts import Barbar = Bar('基本柱狀圖','副标題')bar.add('服裝', ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子'], [5,20,36,10,75,90], is_more_utils = True #設定最右側工具欄 )
# 堆疊(柱狀)圖from pyecharts import Barattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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)
# 并列(柱形)圖from pyecharts import Barattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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最小/最大值
# 橫向并列(柱形)圖from pyecharts import Barattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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 軸交換
折線/面積圖
# 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 #是否填充曲線區域面積
from pyecharts import Lineattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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'])
定制折線圖
from pyecharts import Lineattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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)
面積圖
from pyecharts import Lineattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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)
掃碼關注公衆号,每天推送幹貨!
箱線圖
# 導入箱型圖Boxplotfrom pyecharts import Boxplot columns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]# 設定資料data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]boxplot = Boxplot("箱形圖", "一年的降水量與蒸發量")x_axis = ['降水量','蒸發量']y_axis = [data1,data2]# prepare_data方法可以将資料轉為嵌套的 [min, Q1, median (or Q2), Q3, max]yaxis = boxplot.prepare_data(y_axis) boxplot.add("天氣統計", x_axis, y_axis)
折線圖
from pyecharts import Linecolumns = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]# 設定資料data1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]data2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]line = Line("折線圖","一年的降水量與蒸發量")# is_label_show是設定上方資料是否顯示line.add("降水量", columns, data1, is_label_show=True)line.add("蒸發量", columns, data2, is_label_show=True)
雷達圖
from pyecharts import Radarradar = Radar("雷達圖", "一年的降水量與蒸發量")# 由于雷達圖傳入的資料得為多元資料,是以這裡需要做一下處理radar_data1 = [[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]]radar_data2 = [[2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3]]# 設定column的最大值,為了雷達圖更為直覺,這裡的月份最大值設定有所不同schema = [ ("Jan", 5), ("Feb",10), ("Mar", 10), ("Apr", 50), ("May", 50), ("Jun", 200), ("Jul", 200), ("Aug", 200), ("Sep", 50), ("Oct", 50), ("Nov", 10), ("Dec", 5)]# 傳入坐标radar.config(schema)radar.add("降水量",radar_data1)# 一般預設為同一種顔色,這裡為了便于區分,需要設定item的顔色radar.add("蒸發量",radar_data2,item_color="#1C86EE")
餅圖
# 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
from pyecharts import Pieattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']v1 = [5,20,36,10,75,90]pie = Pie('餅圖示例')pie.add('',attr,v1,is_label_show = True)
環形圖
from pyecharts import Pieattr = ['襯衫','羊毛衫','雪紡衫','褲子','高跟鞋','襪子']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' )
散點圖
# Scatter.add()方法簽名add(name,x_axis,y_axis,extra_data = None,symbol_size = 10,**kwargs)extra_data -> int:第三維資料(可在 visualmap 中将視圖元素映射到第三次元)symbol_size -> int: 标記圖形大小,預設為10
from pyecharts import Scatterv1 = [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]代表切片倒序
引入第三維/類似氣泡圖
from pyecharts import Scatterv1 = [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]) #顯示滑動範圍
掃碼關注公衆号,每天推送幹貨!
地圖
pyecharts地圖資料接口
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-pypkgadd( 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 開啟isis_map_symobol_show 是否顯示地圖示記,預設 True。
from pyecharts import Mapvalue = [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 )
from pyecharts import Map# 世界地圖資料value = [95.1, 23.2, 43.3, 66.4, 88.5]attr= ["China", "Canada", "Brazil", "Russia", "United States"]map0 = Map("世界地圖示例", width=1200, height=600)map0.add("世界地圖", attr, value, maptype="world", is_visualmap=True, visual_text_color='#000')
詞雲圖
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 單詞間隔 預設 20word_size_range -> int 單詞字型大小範圍 預設[12,60]rotate_step -> int 單詞旋轉角度,預設45。
from pyecharts import WordCloudname = [ '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])
掃碼關注公衆号,每天推送幹貨!