作者 | 周志鵬
這幾天,群裡有些小夥伴被一個奇怪的需求困住:
“pyecharts作圖既炫酷,又交互。但是,這個炫酷的效果往往只存在於分析師自己的編輯器中,充其量也就是生成一個html文件來嗨一嗨,有沒有什麼辦法能夠嵌入PPT呢?”
“為什麼想要嵌入PPT呢?”我有點疑惑。
“對於分析師來說,PPT才是和業務溝通的主戰場,當然了,更是裝X的主戰場。有時候,一張炫酷的圖,能讓會議室所有的人喊一聲牛X!”
“有啊!截圖放進去唄~”機智如我。
“沒有交互功能的pyecharts,是沒有靈魂的!”
.....
於是我搜羅了一圈,結果發現,關於如何實現這個需求的內容,要麼語焉不詳,要麼極其麻煩,要麼已經過時完全不兼容。
最後,我找到了一個目前相對簡便的方法,分享給大家。
這句話有強烈的潛臺詞:此乃拋磚引玉,旁友們,苟有方法,勿相忘!
這個方法的邏輯其實非常簡單,可以說是一道小學應用題:
已知,pyecharts繪製的圖形可以保存為html格式,通過網頁打開,也能查看html源代碼
又已知,有一款ppt插件,可以編輯html文本代碼,最終生成對應的可視化效果
求:如何讓pyecharts圖在ppt中出現?
答:先用pyecharts畫圖生成html文件,然後查看源代碼,把相關的源代碼複製到那個PPT插件中,點擊運行即可。
我們來用個例子實踐一下整個操作。
注:筆者是Win10的系統,2016版Office。
Pyecharts生成html文件並獲取源碼
這裡pyecharts繪圖直接用的是官方文檔的示例代碼:
<code>from pyecharts import options as opts/<code><code>from pyecharts.charts import PictorialBar/<code><code>from pyecharts.globals import SymbolType/<code>
<code>location = ["山西", "四川", "西藏", "北京", "上海", "內蒙古", "雲南", "黑龍江", "廣東", "福建"]/<code><code>values = [13, 42, 67, 81, 86, 94, 166, 220, 249, 262]/<code>
<code>c = (/<code><code> PictorialBar/<code><code> .add_xaxis(location)/<code><code> .add_yaxis(/<code><code> "",/<code><code> values,/<code><code> label_opts=opts.LabelOpts(is_show=False),/<code><code> symbol_size=18,/<code><code> symbol_repeat="fixed",/<code><code> symbol_offset=[0, 0],/<code><code> is_symbol_clip=True,/<code><code> symbol=SymbolType.ROUND_RECT,/<code><code> )/<code><code> .reversal_axis/<code><code> .set_global_opts(/<code><code> title_opts=opts.TitleOpts(title="PictorialBar-各省份人口數量(虛假數據)"),/<code><code> xaxis_opts=opts.AxisOpts(is_show=False),/<code><code> yaxis_opts=opts.AxisOpts(/<code><code> axistick_opts=opts.AxisTickOpts(is_show=False),/<code><code> axisline_opts=opts.AxisLineOpts(/<code><code> linestyle_opts=opts.LineStyleOpts(opacity=0)/<code><code> ),/<code><code> ),/<code><code> )/<code><code> .render("pictorialbar_base.html")/<code><code>)/<code>
接著,打開生成的html文件:
右鍵或者Ctrl+U查看源碼:
我們拿到了很長的可視化源碼,不用糾結具體是怎麼寫的,只需要全部複製就好。
在PPT中加載插件
打開PPT,“插入”模塊找到“獲取加載項”,老版本的是“應用商店”。
然後在加載項搜索框輸入“html”,添加第一個結果“Office Apps Fiddle for PowerPoint”:
網速不同,這個插件可能會加載一會,我們耐心等待片刻即可。
繪圖源代碼放入插件並運行
等加載好了之後,我們點擊上面“HTML”模塊,複製代碼,然後點擊右上角長得有點像播放鍵的按鈕:
不出意外,會報一個很醜的錯誤:
不要慌,把它給×掉之後,點擊右上角齒輪:
接著會自動退回到剛才運行前的界面:
按上圖指示,我們再次點擊右上角長得像播放按鈕的地方。
Duang!
最開始畫的帶交互功能的圖形,終於躍然PPT之上:
鼠標放上去,會有預期的數據反饋。
我們可以調整它的大小和在PPT中出現的位置,以保持整體的排版美觀度。
“我去!這麼炫酷的PPT!”隔壁不懂數據的小A偷窺我的電腦屏幕,忍不住吃了一驚。
我又照貓畫虎,按照同樣的流程在PPT插入了一個桑基圖:
“WOC!牛X!”
聽到連續悅耳的誇讚,我笑出了豬叫...
雖然這是我目前找到相對最可用的一種實現方式,但是整個過程仍然歷經艱難險阻,最後做一個雷區複習彙總:
運行第一次時總是會報錯,忽略錯誤,再次運行即可。
最終我們生成了交互圖,美中不足的是旁邊的柱子和齒輪沒找到隱藏的辦法,幸好不太顯眼,不影響大局。
保存PPT後,再次打開以及文件發送給其他人打開,相關交互圖大概率需要重新加載(忽略報錯再次運行),所以,這種插入PPT的方法,適合少而精的幾張效果圖,以達到既簡便,又豔驚四座的效果。
因為我的貧窮,都是在Windows上運行,Mac沒有嘗試過,把文件發送給Mac的旁友,總是顯示為圖片而沒有交互功能,希望Mac同學也親測一下有沒有解決辦法
歡迎大家補充和探究更好的方法......
☞比特幣當贖金,WannaRen 勒索病毒二度來襲!
☞深度|一文讀懂“情感計算”在零售中的應用發展
☞三大運營商將上線5G消息;蘋果谷歌聯手,追蹤30億用戶;jQuery 3.5.0發佈|極客頭條
☞曾遭周鴻禕全網封殺的360猛將:草根打工到36歲身家上億的逆襲!
☞你公司的虛擬機還閒著?基於Jenkins和Kubernetes的持續集成測試實踐瞭解一下!
☞從Web1.0到Web3.0:詳析這些年互聯網的發展及未來方向
☞一文讀懂“情感計算”在零售中的應用發展
閱讀更多 CSDN 的文章