自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

5 分鐘完全解讀 Pyecharts 動態(tài)圖表

開源
pyecharts是基于百度開源圖表組件echarts的python封裝。支持所有常用的圖表組件,和matlibplot系的圖表庫不同的是:pyecharts支持動態(tài)交互展示,這一點在查看復雜數據圖表時特別的有用。

[[393863]]

本文轉載自微信公眾號「Python中文社區(qū)」,作者wedo實驗君。轉載本文請聯(lián)系Python中文社區(qū)公眾號。   

 1. pyecharts簡介

pyecharts是基于百度開源圖表組件echarts的python封裝。支持所有常用的圖表組件,和matlibplot系的圖表庫不同的是:pyecharts支持動態(tài)交互展示,這一點在查看復雜數據圖表時特別的有用。

  1. pip install pyecharts 

2.pyecharts簡單使用

pyecharts支持常用的基本圖形展示,條形圖、折線圖、餅圖、散點圖、熱力圖、漏斗圖、雷達圖、箱型圖、地圖等,還能支持儀表盤,樹形圖的展示。

  1. from pyecharts.charts import Bar,Line 
  2. from pyecharts import options as opts 
  3. from pyecharts.globals import ThemeType 
  4.  
  5. line = ( 
  6.     Line(init_opts=opts.InitOpts(theme=ThemeType.LIGHT, width='1000px',height='300px' )) 
  7.     .add_xaxis(["襯衫""羊毛衫""雪紡衫""褲子""高跟鞋""襪子"]) 
  8.     .add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) 
  9.     .add_yaxis("商家B", [15, 6, 45, 20, 35, 66]) 
  10.     .set_global_opts(title_opts=opts.TitleOpts(title="主標題", subtitle="副標題"), 
  11.                         datazoom_opts=opts.DataZoomOpts(is_show=True)) 
  12.     .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) 
  13. line.render('test.html'
  14. line.render_notebook() 

從上面簡單事例可知,pyecharts的使用包括:

  • 圖標類型(Line)本身的初始化配置,如主題,大小
  • 加載數據:如加載x軸數據,加載y軸數據(可以多個)
  • 設置全局配置,如標題,區(qū)域縮放datazoom,工具箱等
  • 設置系列配置項,如標簽,線條,刻度文本展示等
  • 圖標顯示:render保存成html文件,如果是jupyter notebook則直接通過render_notebook展示在notebook中

3.常用配置使用

在pyecharts中,關于圖表外觀顯示等操作都是在相應的option里配置,包括坐標軸,圖例,數據標簽,網格線,圖表樣式/顏色,不同系列等等。

  • InitOpts:各個圖表類型初始配置
  • set_global_opts:全局外觀配置
  • set_series_opts:系列配置

為了方便大家和自己,下面給出一個常用的組合,通??梢暬銐蛴昧?,快收藏。

  • InitOpts:主題,長寬,動畫效果
  • DataZoomOpts:區(qū)域收縮,這個對于數據特別多,如一天的時間序列數據,特別有用,可以拖動查看全局和局部的數據(可以設置是否顯式顯式還是可拖動type_="inside")
  • 標題配置TitleOpts:說明這個圖表說明的是什么,必備的吧
  • 圖例配置LegendOpts:說明圖表中的不同數據項(這個圖例是可以點擊的,可以單獨查看某個圖例的數據,很有用)
  • 提示框配置TooltipOpts:顯示圖例具體某個點的數據
  • x軸和y軸坐標軸標題說明AxisOpts
  • 坐標刻度調整:特別適用于刻度說明比較多,可以顯示角度變換等
  • markpoint/markline: 對圖表的特別標記,用于重點說明部分和標注區(qū)分線
  1. from pyecharts.charts import Bar,Line 
  2. from pyecharts import options as opts 
  3. from pyecharts.globals import ThemeType 
  4.  
  5. bar = ( 
  6.     Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT,  
  7.                                  width='1000px'
  8.                                  height='300px',  
  9.                                  animation_opts=opts.AnimationOpts(animation_delay=1000, animation_easing="elasticOut"
  10.                                 ) 
  11.         ) 
  12.     .add_xaxis(["襯衫""羊毛衫""雪紡衫""褲子""高跟鞋""襪子"]) 
  13.     .add_yaxis("商家A", [5, 20, 36, 10, 75, 90]) 
  14.     .add_yaxis("商家B", [15, 6, 45, 20, 35, 66]) 
  15.     .set_global_opts(title_opts=opts.TitleOpts(title="主標題", subtitle="副標題"), 
  16.                      toolbox_opts=opts.ToolboxOpts(is_show=False), 
  17.                      # datazoom_opts=opts.DataZoomOpts(is_show=True
  18.                      datazoom_opts=[opts.DataZoomOpts(), opts.DataZoomOpts(type_="inside")], 
  19.                      legend_opts=opts.LegendOpts(type_="scroll", pos_left="50%", orient="vertical"), 
  20.                      xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15), name="我是 X 軸"), 
  21.                      yaxis_opts=opts.AxisOpts(name="我是 Y 軸", axislabel_opts=opts.LabelOpts(formatter="{value} /月")), 
  22.                      tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), 
  23.  
  24.                     ) 
  25.     .set_series_opts(label_opts=opts.LabelOpts(is_show=False), 
  26.                     markpoint_opts=opts.MarkPointOpts( 
  27.                         data=[ 
  28.                             opts.MarkPointItem(type_="max"name="最大值"), 
  29.                             opts.MarkPointItem(type_="min"name="最小值"), 
  30.                             opts.MarkPointItem(type_="average"name="平均值"), 
  31.                         ] 
  32.                         ), 
  33.                     ) 
  34. # line.render('test.html'
  35. bar.render_notebook() 

4.常用組合圖表使用

常用組合圖表有:

  • 不同圖表類型組合如柱狀圖和折線圖組合在一張圖中(雙y軸),主要的看同一視角不同指標的差異和關聯(lián);pyecharts中是通過overlap實現(xiàn)
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Bar, Line 
  3. from pyecharts.faker import Faker 
  4.  
  5. v1 = [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3] 
  6. v2 = [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 175.6, 182.2, 48.7, 18.8, 6.0, 2.3] 
  7. v3 = [2.0, 2.2, 3.3, 4.5, 6.3, 10.2, 20.3, 23.4, 23.0, 16.5, 12.0, 6.2] 
  8.  
  9.  
  10. bar = ( 
  11.     Bar(init_opts=opts.InitOpts(width="680px", height="300px")) 
  12.     .add_xaxis(Faker.months) 
  13.     .add_yaxis("蒸發(fā)量", v1) 
  14.     .add_yaxis("降水量", v2) 
  15.     .extend_axis( 
  16.         yaxis=opts.AxisOpts( 
  17.             axislabel_opts=opts.LabelOpts(formatter="{value} °C"), interval=5 
  18.         ) 
  19.     ) 
  20.     .set_series_opts(label_opts=opts.LabelOpts(is_show=False)) 
  21.     .set_global_opts( 
  22.         title_opts=opts.TitleOpts(title="Overlap-bar+line"), 
  23.         yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} ml")), 
  24.         tooltip_opts=opts.TooltipOpts(trigger="axis", axis_pointer_type="cross"), 
  25.     ) 
  26.  
  27. line = Line().add_xaxis(Faker.months).add_yaxis("平均溫度", v3, yaxis_index=1) 
  28. bar.overlap(line) 
  29. bar.render_notebook() 

從實現(xiàn)上,

  • .extend_axis增加一個縱坐標
  • 增加的折線圖設置軸坐標時設置yaxis_index索引和前面的縱坐標對應
  • 然后兩張疊加overlap bar.overlap(line)

  • 多圖標以網格(GRID)方式組合,主要是對比;pyecharts中是通過grid組件實現(xiàn)
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Bar, Grid, Line 
  3. from pyecharts.faker import Faker 
  4.  
  5. bar = ( 
  6.     Bar() 
  7.     .add_xaxis(Faker.choose()) 
  8.     .add_yaxis("商家A", Faker.values()) 
  9.     .add_yaxis("商家B", Faker.values()) 
  10.     .set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar")) 
  11. line = ( 
  12.     Line() 
  13.     .add_xaxis(Faker.choose()) 
  14.     .add_yaxis("商家A", Faker.values()) 
  15.     .add_yaxis("商家B", Faker.values()) 
  16.     .set_global_opts( 
  17.         title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"), 
  18.         legend_opts=opts.LegendOpts(pos_top="48%"), 
  19.     ) 
  20.  
  21. grid = ( 
  22.     Grid(init_opts=opts.InitOpts(width="680px", height="500px")) 
  23.     .add(bar, grid_opts=opts.GridOpts(pos_bottom="60%")) 
  24.     .add(line, grid_opts=opts.GridOpts(pos_top="60%")) 
  25. grid.render_notebook() 

從實現(xiàn)看

  • 主要通過Grid把各種圖形放入其中
  • 各個圖表的位置通過GridOpts來設置,上下左右的位置
  • 需要注意的是:grid中圖表的title和圖例需要根據所處位置來指定相對的位置(這個有點麻煩,多調調)

5.地圖使用

地圖可用在展示數據在地理位置上的分布情況,也是很常見的可視化的展示組件。pyecharts中是通過Map類來實現(xiàn)的。具體細節(jié)需要注意:

  • map支持不同的maptype,如中國地圖china(省級) china-cities(市級),世界地圖world,還有中國各省市地圖以及世界各國國家地圖,參看github pyecharts/datasets/map_filename.json
  • map的數據格式是(地理位置, value), 如[['廣東', 76],['北京', 58]]
  • 可以通過visualmap_opts查看著重點
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Map 
  3. from pyecharts.faker import Faker 
  4.  
  5. c1 = ( 
  6.     Map() 
  7.     .add("商家A", [list(z) for z in zip(Faker.guangdong_city, Faker.values())], "廣東"
  8.     .set_global_opts( 
  9.         title_opts=opts.TitleOpts(title="Map-廣東地圖"), visualmap_opts=opts.VisualMapOpts() 
  10.     ) 
  11.     
  12.  
  13. c2 = ( 
  14.     Map() 
  15.     .add("商家A", [list(z) for z in zip(Faker.provinces, Faker.values())], "china"
  16.     .set_global_opts( 
  17.         title_opts=opts.TitleOpts(title="Map-VisualMap(連續(xù)型)"), 
  18.         visualmap_opts=opts.VisualMapOpts(max_=200), 
  19.     ) 
  20.  
  21. # c1.render_notebook() 
  22. c2.render_notebook() 

6.特色圖表使用

在學習pyecharts時,看到一些比較有意思的(動態(tài)展示)組件,如隨著時間動態(tài)展示圖表數據的變化。這里做下介紹

  • Timeline:時間線輪播多圖 先聲明一個Timeline, 按照展示的時間順序,將圖表add到Timeline上; 可以通過播放按鈕循環(huán)按照時間順序展示圖表。
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Pie, Timeline 
  3. from pyecharts.faker import Faker 
  4.  
  5. attr = Faker.choose() 
  6. tl = Timeline() 
  7. for i in range(2015, 2020): 
  8.     pie = ( 
  9.         Pie() 
  10.         .add
  11.             "商家A"
  12.             [list(z) for z in zip(attr, Faker.values())], 
  13.             rosetype="radius"
  14.             radius=["30%""55%"], 
  15.         ) 
  16.         .set_global_opts(title_opts=opts.TitleOpts("某商店{}年營業(yè)額".format(i))) 
  17.     ) 
  18.     tl.add(pie, "{}年".format(i)) 
  19. tl.render_notebook() 

  • 儀表盤
  1. from pyecharts import options as opts 
  2. from pyecharts.charts import Gauge 
  3.  
  4. c = ( 
  5.     Gauge() 
  6.     .add("", [("完成率", 30.6)], radius="70%"
  7.         axisline_opts=opts.AxisLineOpts( 
  8.             linestyle_opts=opts.LineStyleOpts( 
  9.                 color=[(0.3, "#67e0e3"), (0.7, "#37a2da"), (1, "#fd666d")], width=30) 
  10.             ), 
  11.             title_label_opts=opts.LabelOpts( 
  12.                 font_size=20, color="blue", font_family="Microsoft YaHei" 
  13.             ), 
  14.         ) 
  15.     .set_global_opts(title_opts=opts.TitleOpts(title="Gauge-基本示例"), legend_opts=opts.LegendOpts(is_show=False),) 
  16.  
  17. c.render_notebook() 

7.其他圖表一覽

從上面的實例看,已經展示地圖,條形圖,折線圖,餅圖,儀表盤。這里展示下pyecharts提供的更多的圖表,

  • 雷達圖 Radar

  • 樹形圖 Tree

  • 熱力圖 heatMap

  • 日歷圖 Calendar

  • 散點圖 Scatter

  • 3D圖 Bar3D

  • 箱型圖 Boxplot

8.總結

本文介紹的基于echarts的python動態(tài)圖表展示組件pyecharts,除了提供眾多常用的圖表外,最重要的是支持動態(tài)操作數據??偨Y如下:

  • pyecharts所有的圖像屬性設置都通過opts來設置,有圖表初始屬性/全局屬性/系列屬性
  • 本文提供常用的配置,足夠用了,拿走不謝,見常用配置使用
  • pyecharts 支持多圖表組合,如折線圖和條形圖 overlap, 多個圖表grid展示
  • pyecharts好用的map,可以展示中國省市,世界各國地圖,請按照[位置,value]準備數據
  • Timeline可以讓你的圖表按照時間輪播
  • 更多圖表參見參考資料

9.參考資料

https://pyecharts.org/#/zh-cn/quickstart

責任編輯:武曉燕 來源: Python中文社區(qū)
相關推薦

2017-07-05 16:22:09

HTML5canvas動態(tài)

2020-03-05 09:59:45

Excel辦公數據

2020-12-17 10:00:16

Python協(xié)程線程

2020-10-27 10:43:24

Redis字符串數據庫

2009-12-08 11:16:07

PHP動態(tài)圖像創(chuàng)建

2020-05-06 10:10:51

Python代碼鏈式調用

2021-07-14 09:18:19

Python插值算法

2022-09-30 15:35:47

json 文件前端開源

2009-02-05 17:09:02

動態(tài)圖片JSPTomcat

2009-08-11 13:27:09

C#動態(tài)圖像按鈕

2012-05-24 15:41:38

PHP

2017-01-12 14:52:03

JVMFinalRefere源碼

2009-12-11 16:28:20

PHP統(tǒng)計圖表類

2023-12-18 15:02:00

PyechartsPython數據可視化工具

2021-05-13 15:23:31

人工智能深度學習

2017-06-13 22:56:27

動態(tài)圖PyTorchKeras

2021-08-13 11:10:32

OpenPyXLExcelPython

2020-05-26 18:50:46

JVMAttachJava

2017-01-11 14:02:32

JVM源碼內存

2021-06-06 13:08:22

C#特性Attribute
點贊
收藏

51CTO技術棧公眾號