python pyecharts庫的用法大全

什麼是pyecharts?

  pyecharts 是一個用於生成 Echarts 圖表的類庫。

  echarts 是百度開源的一個數據可視化 JS 庫,主要用於數據可視化。pyecharts 是一個用於生成 Echarts 圖表的類庫。實際上就是 Echarts 與 Python 的對接。

  使用 pyecharts 可以生成獨立的網頁,也可以在 flask , Django 中集成使用。

pyecharts包含的圖表#
  Bar(柱狀圖/條形圖)
  Bar3D(3D 柱狀圖)
  Boxplot(箱形圖)
  EffectScatter(帶有漣漪特效動畫的散點圖)
  Funnel(漏鬥圖)
  Gauge(儀表盤)
  Geo(地理坐標系)
  Graph(關系圖)
  HeatMap(熱力圖)
  Kline(K線圖)
  Line(折線/面積圖)
  Line3D(3D 折線圖)
  Liquid(水球圖)
  Map(地圖)
  Parallel(平行坐標系)
  Pie(餅圖)
  Polar(極坐標系)
  Radar(雷達圖)
  Sankey(桑基圖)
  Scatter(散點圖)
  Scatter3D(3D 散點圖)
  ThemeRiver(主題河流圖)
  WordCloud(詞雲圖)

  用戶自定義

  Grid 類:並行顯示多張圖
  Overlap 類:結合不同類型圖表疊加畫在同張圖上
  Page 類:同一網頁按順序展示多圖
  Timeline 類:提供時間線輪播多張圖

pyecharts安裝

 pip install pyecharts

下面給大傢介紹python pyecharts庫的使用,一起看看!

現在下載的庫都是1.x版本的,使用方法和以前有很大區別

加載

from pyecharts.charts import Line, Bar, Funnel
from pyecharts.faker import Faker
import pyecharts.options as opts
from pyecharts.commons.utils import JsCode

折線圖的繪制

最簡單的版本

line1 = (
 Line()
 .add_xaxis(['2015', '2016', '2017', '2018', '2019'])
 .add_yaxis('進入黨政機關及事業單位的比例%', [30.23, 15.06, 17.6, 16.56, 18.51])
)

line1.render_notebook()

在這裡插入圖片描述

高級版本

多條線,圖片大小,設置標題、圖例及其位置,缺失數據的繪制,給圖例也加上顏色進行區分

# https://blog.csdn.net/seakingx/article/details/105531515 繪制百分數
# https://www.freesion.com/article/2819552517/ 圖例添加顏色,color參數,非linestyle_opts的子參數
line1 = (
 Line(init_opts=opts.InitOpts(width="600px", height="400px"))
 .add_xaxis(['2015', '2016', '2017', '2018', '2019'])
 .add_yaxis('進入黨政機關及事業單位的比例%', [30.23, 15.06, 17.6, 16.56, 18.51], 
    label_opts=opts.LabelOpts(formatter=JsCode("function (params) {return params.value[1] + '%'}"))
    )
 .add_yaxis('簽約國企、私企和三資企業比例%', [69.78, 84.78, None, 82.67, 81.33], 
    label_opts=opts.LabelOpts(formatter=JsCode("function (params) {return params.value[1] + '%'}")),
    #linestyle_opts=opts.LineStyleOpts(color='yellow', width=2)
    #linestyle_opts=opts.LineStyleOpts(width=2),
    color='blue'
    )
 .set_global_opts(title_opts=opts.TitleOpts(title='南開大學本科生的就業去向及比例',
            pos_right='50%'
            ),
      legend_opts=opts.LegendOpts(pos_right='10%',
            pos_top='10%',
            orient='vertical')
     )
 #.render('南開本科.html')
)

line1.render_notebook()

在這裡插入圖片描述

render()與render_notebook的報錯和無反應:

line1有render代碼時,就不能在代碼裡添加render_notebook瞭,否則報錯: AttributeError: ‘str’ object has no attribute ‘render_notebook’

條形圖和折線圖的結合

最簡單的形式

x = Faker.choose()
scatter1 = (
 Bar()
 .add_xaxis(x)
 .add_yaxis("商傢A", Faker.values(), yaxis_index=0) 
 # 設置副坐標軸時,必須加這個命令,這個命令並不能決定主副坐標軸
 .extend_axis(yaxis=opts.AxisOpts(type_="value", name="商傢A", position="left")) 
 .set_global_opts(yaxis_opts=opts.AxisOpts(type_="value", name="商傢B", position="right")) 
)

# 下面的圖裡隻能設置個index
scatter2 = (
 Line()
 .add_xaxis(x)
 .add_yaxis("商傢B", [v/1000 for v in Faker.values()], yaxis_index=1)
)
scatter1.overlap(scatter2)
scatter1.render_notebook()

在這裡插入圖片描述

副坐標軸的使用和坐標軸范圍、刻度大小的設置,添加坐標軸的標簽

# 繪制條形圖
bar=(
 Bar()
 .add_xaxis(['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021'])
 .add_yaxis('招錄職位數', [11729, 13475, 15659, 15583, 16144, 9657, 13549, 13172])
 .add_yaxis('招錄人數', [19538, 22249, 27817, 27061, 28533, 14537, 24128, 25726])
 
 # 設置副坐標軸
 .extend_axis(yaxis=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 萬"), 
          interval=30,
         max_=180,
         min_=0) # 設置坐標軸的區間長度
    )
 #.set_series_opts(label_opts=opts.LabelOpts(is_show=False))
 .set_global_opts(
  title_opts=opts.TitleOpts(title="歷年公務員考試數據", pos_right='45%'), # 設置標題及標題的位置
  legend_opts=opts.LegendOpts(pos_right='10%', # 設置圖例的位置
         #pos_top='10%',
         orient='vertical'), # 不同圖例之間是豎著排放的
  #max_=40000, 這裡沒有這個lim參數,在坐標軸裡面可以設置
  
  # 設置主坐標軸配置項
  yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter="{value} 人"), 
         max_=50000)   # 設置坐標軸的范圍 lim
 )

)

# 繪制折線圖(也可以不加括號)
line = Line().add_xaxis(['2014', '2015', '2016', '2017', '2018', '2019', '2020', '2021']).add_yaxis("報名人數", [152, 140.9, 139.46, 148.63, 138, 137.93, 140, '-'], 
      yaxis_index=1, #如果不加該參數,就沒有副坐標軸,這樣不同量級的數據就會出現問題
      label_opts=opts.LabelOpts(formatter=JsCode("function (params) {return params.value[1] + '萬'}"))
      )
 
# 兩個圖形疊加起來
bar.overlap(line)
bar.render("overlap_bar_line.html")
bar.render_notebook()

在這裡插入圖片描述

繪制漏鬥圖

最簡單的繪制方法

# 主要是數據格式和其他的不一致
funnel = (
 Funnel()
 .add("商城漏鬥", [ list(two_values) for two_values in zip(['召回', '粗排', '精排'], [100, 80, 10]) ])
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}次")) 
 .set_global_opts(title_opts=opts.TitleOpts(title="請求過濾的漏鬥分析"))
)
 
funnel.render_notebook()

復雜點的繪制方法

# https://zhuanlan.zhihu.com/p/63976935 一些參考
funnel = (
 Funnel(init_opts=opts.InitOpts(width="600px", height="400px")) #是寬和高,而不是像素
 #Funnel()
 .add("商城漏鬥", [ list(two_values) sfor two_values in zip(['召回', '粗排', '精排'], [100, 80, 10]) ])
 #.set_series_opts(label_opts=opts.LabelOpts(is_show=False),
      #markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max", name="最大值"),]))
 .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}, {d}%")) # d是每個數值占總體的比重
 
 # 百分比這裡建議傳入一組新的y數據(用每個數據除以一個數值) https://zhuanlan.zhihu.com/p/63976935
 .set_global_opts(title_opts=opts.TitleOpts(title="請求過濾的漏鬥分析"),
     #yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(formatter='{data} {value}%')) #"{value} 人"
     )
)
 
funnel.render_notebook()

在這裡插入圖片描述

到此這篇關於python pyecharts庫的用法大全的文章就介紹到這瞭,更多相關python pyecharts庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!