Python數據可視化 pyecharts實現各種統計圖表過程詳解

1、pyecharts介紹

Echarts是一款由百度公司開發的開源數據可視化JS庫,pyecharts是一款使用python調用echarts生成數據可視化的類庫,可實現柱狀圖,折線圖,餅狀圖,地圖等統計圖表。

2、柱狀圖

適用場合是二維數據集(每個數據點包括兩個值x和y),但只有一個維度需要比較,用於顯示一段時間內的數據變化或顯示各項之間的比較情況。

優點: 利用柱子的高度,反映數據的差異,肉眼對高度差異很敏感。

缺點: 只適用中小規模的數據集。

柱狀圖最基本用法

from pyecharts import Bar
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
sales = [18888,20023,30989,8873,29876,5409]
bar = Bar('水果銷售情況')
bar.add('',fruits,sales,is_stack=True)
(bar.render())

 

add()方法用於添加數據。

當要比較不同商家水果銷量情況,只需多次調用add()方法:

from pyecharts import Bar
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
bar = Bar('水果銷售情況')
bar.add('商家A',fruits,shop1_sales,is_stack=False)
shop2_sales = [4888,7023,3989,5873,8876,6409]
bar.add('商家B',fruits,shop2_sales,is_stack=False)
bar.render()

如果想在數據疊加顯示,只需將is_stack參數設置爲True

from pyecharts import Bar
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
bar = Bar('水果銷售情況')
bar.add('商家A',fruits,shop1_sales,is_stack=True)
shop2_sales = [4888,7023,3989,5873,8876,6409]
bar.add('商家B',fruits,shop2_sales,is_stack=True)
bar.render()

下面是柱狀圖中常用方法和屬性介紹:

(1)add()方法中根據is_stack可以設定柱形圖是否疊加顯示

(2)is_more_utils=True 參數來設置最右側工具欄,對生成的圖進行更多的操作,如將柱形圖更改爲折線圖等

(3)標記的使用:mark_point=[‘average']標記點,平均值;mark_line=[‘min','max','average']標記線,最大值、最小值和平均值

(4)橫向柱形圖:is_convert=True,標識交換X軸和Y軸

3、折線圖

常用折線圖來描繪統計事項總體指標的動態、研究對象間的依存關係以及總體中各部分的分配情況等。

# 普通折線圖
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
 
line = Line('折線圖')
line.add('商家A', fruits, shop1_sales, mark_point=['max'])
line.add('商家B', fruits, shop2_sales, mark_point=['min'])
line.show_config()
line.render()

line()方法中有個is_smooth的參數,將參數的值設置爲True,折線圖的線條會以圓滑的趨勢變化,不像上圖那樣以直線的方式變化。

# 普通折線圖
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
 
line = Line('折線圖')
line.add('商家A', fruits, shop1_sales, mark_point=['max'])
line.add('商家B', fruits, shop2_sales, mark_point=['min'], is_smooth=True)
line.show_config()
line.render()

上圖的商家A設置了is_smooth參數的值爲True,商家B沒有設置is_smooth屬性。可以看到商家B的折線是以圓滑的趨勢變化的。

最常用的還有階梯折線圖和麪積折線圖。

階梯折線圖

將line()方法的is_step參數設置爲True。

fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop2_sales = [4888,7023,3989,5873,8876,6409]
 
line = Line('折線圖')
line.add('商家B', fruits, shop2_sales, mark_point=['min'], is_step=True)
line.show_config()
line.render()

fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop2_sales = [4888,7023,3989,5873,8876,6409]
shop1_sales = [8888,3323,6989,8873,3876,15409]
line3 =Line("面積折線圖")
line3.add("商家A", fruits, shop1_sales, is_fill=True, line_opacity=0.2,  area_opacity=0.4, symbol=None, mark_point=['max'])
line3.add("商家B", fruits, shop2_sales, is_fill=True, area_color='#a3aed5', area_opacity=0.3, is_smooth=True)
line3.show_config()
line3.render()

 

柱狀圖-折線圖

在柱狀圖上顯示折線圖也是常用的統計圖表。需要藉助Overlap類實現。

from pyecharts import Bar, Line, Overlap
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
 
shop1_sales = [8888,3323,6989,8873,3876,15409]
shop2_sales = [4888,7023,3989,5873,8876,6409]
 
bar = Bar("柱形圖-折線圖")
bar.add('bar', fruits, shop1_sales)
line = Line()
line.add('line', fruits, shop2_sales)
 
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
overlap.show_config()
overlap.render()

4、餅圖

餅圖可以比較清楚地反映出部分與部分、部分與整體之間的數量關係.易於顯示每組數據相對於總數的大小.而且顯現方式直觀.

from pyecharts import Pie
fruits = ['蘋果','香蕉','鳳梨','桔子','橙','桃子']
shop1_sales = [8888,3323,6989,8873,3876,15409]
pie = Pie('餅圖')
pie.add('芝麻餅', fruits, shop1_sales, is_label_show=True)
pie.show_config()
pie.render()

 

玫瑰花樣式餅圖

 

pie2 = Pie("餅圖-玫瑰圖示例", title_pos='center', width=900)

pie2.add("商家A", fruits, shop1_sales, center=[25, 50], is_random=True, radius=[25, 60], rosetype='radius')

pie2.add("商家B", fruits, shop2_sales, center=[75, 50], is_random=True, radius=[25, 60], rosetype='area', is_legend_show=False, is_label_show=True)

pie2.show_config()

pie2.render()

 

5、散點圖

散點圖又稱散點分佈圖,是以一個變量爲橫座標,另一變量爲縱座標,利用散點(座標點)的分佈形態反映變量統計關係的一種圖形。特點是能直觀表現出影響因素和預測對象之間的總體關係趨勢。

靜態散點圖

from pyecharts import Scatter
scatter =Scatter("散點圖示例")
scatter.add("A", shop1_sales, shop2_sales)
scatter.add("B", shop1_sales[::-1], shop2_sales)
scatter.show_config()
scatter.render()

 

動態散點圖

from pyecharts import EffectScatter
v1 =[5, 20, 36, 10, 10, 100]
v2 =[55, 60, 16, 20, 15, 80]
 
# 動態散點圖
es =EffectScatter("動態散點圖")
 
# v1 x座標 v2 y座標
es.add('蘋果', v1, v2)
es.show_config()
es.render()

各種圖形動態散點圖

from pyecharts import EffectScatter

es = EffectScatter("動態散點圖各種圖形")

es.add("", [10], [10], symbol_size=20, effect_scale=3.5, effect_period=3, symbol="pin")

es.add("", [20], [20], symbol_size=12, effect_scale=4.5, effect_period=4,symbol="rect")

es.add("", [30], [30], symbol_size=30, effect_scale=5.5, effect_period=5,symbol="roundRect")

es.add("", [40], [40], symbol_size=10, effect_scale=6.5, effect_brushtype='fill',symbol="diamond")

es.add("", [50], [50], symbol_size=16, effect_scale=5.5, effect_period=3,symbol="arrow")

es.add("", [60], [60], symbol_size=6, effect_scale=2.5, effect_period=3,symbol="triangle")

es.show_config()

es.render()

 

以上是使用pyecharts實現柱狀圖、折線圖、散點圖和餅圖的統計圖表。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章