一、 概述
最近有一些數據需要繪圖分析,由于本人對excel不熟悉,查閱資料發現pandas + pyecharts
對數據進行可視化分析非常方便,所以開始嘗試使用。我這里通過anaconda自帶的jupyterlab進行測試,但是使用過程中發現pyecharts的圖表無法在jupyterlab上面顯示,經過查閱資料解決了此問題,在這里做一個記錄方便以后查閱。
這里使用的 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
環境有自己不同的渲染要求,pyecharts
在底層做了適配處理,但因為我們無法在import pyecharts
的時候知道用戶具體使用的是哪種notebook
環境,所以需要用戶在使用時在頂部聲明環境類型。 -
解決方法
Jupyter Lab 渲染的時候有兩點需要注意:
Jupyter Notebook
直接調用render_notebook
隨時隨地渲染圖表,默認為Jupter-Notebook
。
- 在
Jupyter Lab
中運行下面的兩行代碼即可:
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
- 在第一次渲染的時候調用
load_javascript()
會預先加載基本JavaScript
文件到Notebook
中。如若后面其他圖形渲染不出來,則請開發者嘗試再次調用,因為load_javascript
只會預先加載最基本的 js 引用。而主題、地圖等 js 文件需要再次按需加載。 -
load_javascript()
和render_notebook()
方法需要在不同的 cell 中調用,這是 Notebook 的內聯機制,其實本質上我們是返回了帶有 html, javascript 對象的 class。notebook 會自動去調用這些方法。
修改后的代碼如下:
from pyecharts.globals import CurrentConfig, NotebookType
CurrentConfig.NOTEBOOK_TYPE = NotebookType.JUPYTER_LAB
from pyecharts.charts import Bar
from pyecharts import options as opts
# 內置主題類型可查看 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()
運行結果如下圖:
image.png
如果你按照上面的方式還是無法顯示圖形,可以按照下面的參考文檔進行操作。