一、 概述
最近有一些數(shù)據(jù)需要繪圖分析,由于本人對excel不熟悉,查閱資料發(fā)現(xiàn)pandas + pyecharts對數(shù)據(jù)進行可視化分析非常方便,所以開始嘗試使用。我這里通過anaconda自帶的jupyterlab進行測試,但是使用過程中發(fā)現(xiàn)pyecharts的圖表無法在jupyterlab上面顯示,經(jīng)過查閱資料解決了此問題,在這里做一個記錄方便以后查閱。
這里使用的 pyecharts 版本:
1.7.0
二、使用pyecharts
查看pyecharts的版本號:
import pyecharts
pyecharts.__version__
代碼運行后并不能繪制出圖像來,我是使用jupyter lab運行代碼的,用notebook就可以。如下圖所示:
from pyecharts.charts import Bar
x_value = ['A', 'B', 'C']
y1 = [123, 52, 214]
y2 = [45, 63, 161]
bar = (
Bar()
.add_xaxis(x_value)
.add_yaxis(series_name='公司甲', yaxis_data=y1)
.add_yaxis(series_name='公司乙', yaxis_data=y2)
)
bar.render_notebook()

image.png
三、原因及解決方法
-
原因
不同的notebook環(huán)境有自己不同的渲染要求,pyecharts在底層做了適配處理,但因為我們無法在import pyecharts的時候知道用戶具體使用的是哪種notebook環(huán)境,所以需要用戶在使用時在頂部聲明環(huán)境類型。 -
解決方法
Jupyter Lab 渲染的時候有兩點需要注意:
Jupyter Notebook 直接調(diào)用render_notebook隨時隨地渲染圖表,默認為Jupter-Notebook。
- 在
Jupyter Lab中運行下面的兩行代碼即可:
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
- 在第一次渲染的時候調(diào)用
load_javascript()會預先加載基本JavaScript文件到Notebook中。如若后面其他圖形渲染不出來,則請開發(fā)者嘗試再次調(diào)用,因為load_javascript只會預先加載最基本的 js 引用。而主題、地圖等 js 文件需要再次按需加載。 -
load_javascript()和render_notebook()方法需要在不同的 cell 中調(diào)用,這是 Notebook 的內(nèi)聯(lián)機制,其實本質(zhì)上我們是返回了帶有 html, javascript 對象的 class。notebook 會自動去調(diào)用這些方法。
修改后的代碼如下:
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts.charts import Bar
from pyecharts import options as opts
# 內(nèi)置主題類型可查看 pyecharts.globals.ThemeType
from pyecharts.globals import ThemeType
bar = (
Bar(init_opts=opts.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(["襯衫", "羊毛衫", "雪紡衫", "褲子", "高跟鞋", "襪子"])
.add_yaxis("商家A", [5, 20, 36, 10, 75, 90])
.add_yaxis("商家B", [15, 6, 45, 20, 35, 66])
.set_global_opts(title_opts=opts.TitleOpts(title="主標題", subtitle="副標題"))
)
bar.load_javascript()
bar.render_notebook()
運行結(jié)果如下圖:

image.png
如果你按照上面的方式還是無法顯示圖形,可以按照下面的參考文檔進行操作。