賈莉媛
中央宣傳部電影數字節目管理中心,北京 100866
隨著大數據技術的飛速發展,數據可視化已成為一種必要的技術手段,幫助人們更好地理解數據、發現規律、做出決策。近年來,電影公益放映服務體系不斷升級,電影公益放映服務管理工作也進入了新的發展階段。在農村數字電影放映回傳監管系統和基于GPS/GPRS 的全國農村電影放映監管平臺的基礎上,中央宣傳部電影數字節目管理中心以多年運營數據為基礎,構建了農村電影大數據指標體系。
全國農村電影基層宣傳文化陣地圖以及全國農村電影管理平臺的提出,為持續做好農村電影公益放映的規范化服務管理工作,保障電影公益放映工作健康、有序發展,確保政府資金投入惠及于民起到重要作用,成為全流程掌握農村電影放映服務情況的重要技術手段。全國農村電影管理平臺(圖1)從陣地圖、放映計劃、放映回傳、滿意度情況等方面對農村電影公益放映工作進行了綜合性數據展示,從而全面綜合地了解農村電影放映服務情況,為運營和管理人員提供數據支持。該平臺的數據可視化實現需要經過以下流程:數據預處理、數據分析、可視化結果生成和用戶交互。

圖1 全國農村電影管理平臺功能架構圖
數據預處理是數據挖掘分析前非常重要的數據準備工作。其一方面可以保證數據的準確性和有效性,另一方面通過對數據格式和內容的調整,使數據更符合挖掘需求[1]。本項目的數據預處理主要依據項目功能需求,對現有公益放映數據進行關聯分析,剔除與目標無關的冗余數據,形成可用的結果數據。在對原始數據表進行處理后得到結果表,大大提升了可視化結果生成的效率,同時減少數據更新時產生的錯誤。在數據格式方面,由于JSON 格式的數據易于創建、解析,便于轉換和傳輸,本項目最終會將所有結果表中的數據統一轉換成JSON 格式,從而完成對目標數據的預處理。
數據可視化技術是將繁雜、不能直接讀取的數據信息,轉換成數據結果和結論的過程。通過圖表表達,將數據、信息簡潔化,使用戶可以快速獲取信息、理解數據,發現數據規律[2]。從呈現效果可將數據可視化分為靜態可視化、交互可視化、動態可視化:靜態可視化通常以二維數據為主,通過圖表和文字的組合展示某個主題的信息數據;交互可視化是對多維數據的展示,將基礎數據圖表進行組合,以人機交互為核心,通過鼠標事件對數據節點的“下鉆”操作展示數據的內部關聯,這也是本項目的主要展現部分;動態可視化將多維數據信息進行整合處理,以動態形式展示各維數據間的變化,最普遍的就是按照時間發展情況的動態展示數據。
數據可視化的基本流程主要包括數據采集與處理、數據挖掘與分析、數據到可視化的映射、可視化展示。
其中可視化映射是數據可視化的核心環節。不同數據對應不同的可視化圖形,數據類型包括分類數據、時序數據和位置數據。在本項目中,主要存在以下數據類型映射:分類數據和位置數據。分類數據主要通過其屬性進行分組,如不同影片的放映場次、不同地區的放映點數量等,主要表現形式為條形圖、柱狀圖或餅圖等。位置數據是以地圖形式展示的數據,如全國放映點打點、放映回傳地理位置打點等,主要有地理散點圖、遷徙圖、熱力圖等。
ECharts 是一個使用 JavaScript 實現的開源可視化庫,可跨設備運行,具有良好的兼容性和可擴展性,底層依賴矢量圖形庫 ZRender,提供簡明直觀、交互豐富、可高度個性化定制的數據可視化圖表。ECharts 提供了常規的折線圖、柱狀圖、散點圖、餅圖、K 線圖,以及用于統計的盒形圖,用于地理數據可視化的地圖、熱力圖、線圖,用于關系數據可視化的關系圖、樹形圖、旭日圖,多維數據可視化的平行坐標,還有用于商業智能(Business Intelligence, BI)的漏斗圖和儀表盤,且支持不同種類圖的組合應用。Echarts 4.0 以上的版本能夠展現千萬級數據量,此數據量級依然能夠進行流暢的縮放、平移等交互。
Ajax,即異步JavaScript 和XML(Asynchronous Javascript and XML) ,是一種創建交互式網頁應用的網頁開發技術。服務器與后臺只需進行少量的數據交換,便可在不重新加載整個網頁的情況下,對網頁進行局部更新[3]。在頁面加載與更新時,用戶的請求并非直接全部提交給服務器,其中一些數據處理工作交給Ajax 引擎來完成,這就實現了用戶請求與服務器響應的異步化。引入Ajax 可以很好地解決傳統Web 應用加載速度慢的問題,可實現高速異步傳輸,減輕服務器的壓力和資源損耗。
可視化前的數據分析與處理是整個流程中的關鍵環節,它是將預處理后的數據按照一定規則和方法進行分析,為可視化展示提供直接的數據支撐。本項目可視化前的數據處理工作主要包括數值單位轉換、放映場次排序和分組,以及放映點分布、放映場次分布、放映場次占比等數據的處理;根據數據更新頻率和數據量的大小可選擇進行前端處理或后端處理。前端處理可在頁面上直接通過Ajax 異步獲取數據進行可視化展示,后端處理主要針對數據量較大的放映點地理坐標數據、放映回傳數據或其他需要計算排序的數據,如影片部數和場次數據,通過后端數據變換或函數操作生成可視化展示的結果數據。
(1)數值單位轉換:放映點數據、累計放映場次數據隨著時間的發展可達到十萬或百萬,為使數據呈現更為直觀,對這些數據統一轉換為以“萬”為單位的數據。
(2)排序計算:經過預處理生成的結果表中影片部數或場次等數據已經是可以直接使用的數據,此處的排序計算則是將結果數據根據可視化映射類型進行處理。如需在前端對分類型數據進行條形圖、餅圖展示時,通過sort 函數進行排序計算后,生成可直接可視化展示的調用結果。
海量數據的加載與更新是本項目解決的關鍵技術難點之一。根據全國放映點填報數據顯示,截至2024 年2 月底,全國已有超61 萬個公益放映點(公益放映點數據動態變化),當以數據地圖進行數據展示時,將面臨十萬級以上數據加載與更新;同時按照近5 年農村電影放映運營的數據反饋來看,年均訂購場次1000 萬左右,年均放映回傳數據在800 萬場左右,這就意味著在進行累計數據展示時,最多時將面臨百萬級數據的加載更新。本項目在多個展示頁面中出現了地圖數據的繪制,如陣地圖、放映計劃、放映公示均有地圖展示整體的分布情況,為降低頁面加載時間,帶來更好的用戶體驗,主要從以下四個方面進行處理:
(1)分步加載
本項目在進行可視化設計時,采用了數據與圖表結合的方式進行綜合性展示。為了提高加載速度,提升用戶使用大屏的體驗,我們對數據展示和圖表展示采用分步加載進行呈現。對數值型展示數據,如每日放映點、場次、影片數量等靜態數據,利用Ajax 技術直接從后臺獲取,在前端頁面中即時賦值加載;對放映地圖、排行、趨勢類圖表數據,經過數據分析與處理后使用ECharts 進行繪制。這樣可以在頁面刷新時,直接將一部分直觀數據呈現,避免頁面出現空白的情況。
(2)ECharts 的渲染
ECharts 對百萬以上數據量的渲染場景提供了appendData 處理接口,例如地理數據的打點,往往需要分片加載數據量。appendData 接口提供了分片加載后增量渲染的能力,渲染新加入數據塊時不會清除原有已渲染部分。本項目中,對全國放映陣地地圖采用了appendData 渲染方式,加快了渲染速度,提升了用戶體驗。但值得注意的是,目前此接口只適用于散點圖和線圖。
除此以外,對柱狀圖、條形圖、散點圖、線圖、熱力圖等配置漸進式渲染(Progressive Rendering)方式,支持每個系列單獨配置。
當圖中有數千到幾千萬圖形元素時,同時繪制或交互重繪的時候可能會造成界面的卡頓甚至假死。ECharts 4.0以上版本全流程支持漸進式渲染,渲染時會把創建好的圖形分到數幀中渲染,每一幀只渲染指定數量的圖形,避免了頁面卡頓或假死情況發生。progressive 參數用于設定一次渲染處理多少數據,如“progressive:400”表示每次渲染處理400 個數據。progressiveThreshold 參數用于設定啟用漸進式渲染圖形數量的閾值,意味著當單系列圖形數量超過該閾值時啟用漸進式渲染,如“progressive-Threshold:3000”表示已有渲染數據達到3000 個之后開始加載渲染后的圖案。這個配置項的默認值是當數據量大于3000 個時開啟,每次渲染400 個。漸進式渲染配置的數據參數,需要根據圖表圖形復雜度進行適當調整。若復雜度低,設置的數值可以大一些,若復雜度高,可以設置數值小一些,從而在不影響交互流暢性的前提下獲得更快的繪制速度。
(3)數據量壓縮
在放映回傳展示部分,我們以熱力圖形式進行呈現。熱力圖的優勢在于可直觀反映地域分布的密集程度,即可直觀展現出各地區放映點以及是否回傳的情況。但通過測試發現,百萬千萬級的數據量通過熱力圖呈現時會造成過載的情況,影響各地區界線的呈現。綜合考慮可視化呈現數據處理情況,我們對回傳部分展示的數據進行了壓縮,以達到更優的展示效果。
通過對比3 種壓縮力度(不壓縮、10 倍壓縮、100倍壓縮)的結果,我們發現,過大和過小的壓縮量均會對可視化呈現產生失真的影響,綜合考慮后,我們最終選擇壓縮10倍的數據。
(4)頁面加載提示
在用ECharts 繪制地圖時,我們在初始化加載地圖的同時添加了頁面加載提示,可直接調用ECharts的showLoading 方法顯示,還可為其設置樣式,從視覺上可有效提升用戶體驗。
本項目中的可視化圖表均使用ECharts 庫進行實現。
3.3.1全國農村電影基層宣傳文化陣地圖研發
全國農村電影基層宣傳文化陣地圖是直觀展現全國農村電影公益放映點填報情況的數據地圖,為更好地呈現出放映點分布情況,選用基于地理坐標系構建的散點圖進行展示,主要通過ECharts 的geo地理坐標系組件來實現。具體分以下幾個步驟:
(1)繪制地圖輪廓
ECharts 通過使用registerMap 接口將地圖數據注冊到ECharts 中以繪制地圖輪廓。地圖數據信息可通過geoJSON 和SVG 兩種方式引入。本項目地圖使用了互聯網地圖,通過geoJSON 的方式注冊地圖數據。
(2)繪制放映點數據
ECharts 中的series-scatter 配置項用來實現散點圖的繪制。其中用coordinateSystem 指定數據系列使用的坐標系,“geo”即表示通過geoIndex 指定相應的地理坐標系組件。在series-scatter 中可以通過datasetIndex、dataGroupId、data 三種方式添加數據,本項目中已將放映點的地理數據以JSON 形式存儲并賦值相應的變量,即可直接使用data 對應變量的方式添加放映點數據。
(3)繪制地圖樣式
在地圖樣式設置時,可使用geo 配置項,對地圖的位置、中心位置、長寬比、區域顏色、圖形顏色、描邊粗細及顏色、陰影等進行設置。本項目中通過對geo 圖層的疊加實現立體地圖效果,在樣式設置中,底層地圖與上層地圖的樣式設置略有不同。
在設置放映點的樣式時,可使用series-scatter配置項,從而對點的大小、顏色、標識等進行樣式設置。全國農村電影基層宣傳文化陣地圖呈現效果示例如圖2所示,圖上的黃色散點是放映點。

圖2 全國農村電影基層宣傳文化陣地圖呈現效果示例
3.3.2 圖表可視化研發
(1)多圖表展示
在該項目中,“當日放映情況”與“放映回傳情況”部分需多圖表綜合性展示,以更全面地反映放映公示填報與放映回傳的整體情況。
在可視化圖表的選擇上,排行類的圖表選用條形圖呈現,分布類的圖表用餅圖呈現,趨勢類的則用折線圖呈現。
在創建了ECharts 繪制容器后,可通過grid 來設置不同圖表的位置和大小;grid 將構建一個直角坐標系網格,最多支持2 個x 軸和2 個y 軸,可通過具體參數設置將圖表定位到grid 的特定位置。
條形圖、柱狀圖、折線圖等由直角坐標系構建的圖表,用grid 進行布局設置后,通過xAxis(x 軸)和yAxis(y 軸)配置詳細的圖表樣式并填入相應的數據以完成繪制。
(2)放映點特效展示
ECharts中不僅支持標準散點圖,也支持帶有漣漪特效動畫的散點圖(Effect Scatter),可應用動畫特效將某些數據進行突出視覺展示。如對當前有放映公示計劃的放映點進行突出展示時,對effectScatter 的rippleEffect中的相關樣式進行設置即可。
3.3.3 放映公示與天氣情況呈現
根據目前填報的電影公益放映點具體情況可知,當前大部分公益放映點仍為室外放映點。室外放映在一定程度上受到天氣情況的制約,如在大風、雨雪、沙塵暴、炎熱等天氣條件下不利于開展室外公益放映。在放映公示地圖的基礎上,加入天氣影響因素參考,對做好公益放映服務管理工作,完善放映公示計劃填報管理具有積極作用。
本文通過與互聯網天氣應用編程接口(API)進行對接,得到了全國范圍內的實況天氣數據,通過post 方式從后臺天氣綜合表中獲取天氣判斷指標數據。
(1)天氣數據的處理
通過對實況天氣數據的采集和綜合性分析,對采集的天氣數據中有關觀測時間、溫度、體感溫度、風力等級、風速、當前小時累計降水量、能見度數據進行提取,形成天氣參考指標。該天氣API 支持的實況天氣更新頻率為15分鐘,根據系統需要,我們將更新頻率設置為采集數據量/小時。
(2)天氣數據指標的設置
鑒于天氣情況對放映工作會產生實際影響,我們對提取的天氣數據進行計算后形成不利天氣指標:將累計降水量作為是否降雨的參考依據,設置“降雨量>0”即為有雨;將實況風力等級作為是否大風的參考依據,設置“實況風力等級>5”即為大風;將實況溫度作為是否低溫的參考依據,設置“實況溫度≤10”即為低溫;以上三項只要有任一不利天氣出現便定義為“不適宜放映”。
(3)天氣地圖的可視化呈現
天氣地圖的可視化呈現使用了ECharts 的視覺映射,通過visualMap 組件來實現。視覺映射分為連續型和分段型。連續型是通過指定數據的最大值和最小值來確定映射范圍;分段型具有更豐富的模式,支持數據平均分段、自定義分段以及類別分段。通過處理后的天氣數據設置為不同的可視化樣式,呈現在地圖上。
3.3.4 用戶交互研發
在本項目中,各頁面都存在與用戶的交互,除頁面本身的交互外,通過圖表進行的交互主要可分為兩大類:事件交互和圖表交互。事件交互如點擊省份名稱切換省份地圖,在全國地圖上點擊相應的省份“下鉆”到省份地圖查看詳細信息;圖表交互主要為放映點詳細信息的展示。
事件交互以“下鉆”省份地圖為例,通過ECharts鼠標操作觸發。例如綁定一個鼠標點擊操作,圖表交互主要通過ECharts 的tooltip 組件彈出提示框,展示放映點詳細信息。tooltip 組件可以設置在全局,也可以設置在grid、series、data 中。需要判斷我們所交互的內容是針對哪一部分,如我們將鼠標放置在放映點上彈出提示框,就是在系列中設置tooltip。tooltip 的屬性也可對提示框的外觀樣式、觸發類型進行設置。
本文介紹了全國農村電影管理平臺數據可視化解決方案,通過Ajax 和 ECharts 的綜合應用實現了數據圖表的高效實時動態呈現,重點解決了十萬級乃至百萬級數據可視化展示時加載與更新的難題。繪制的放映陣地圖、放映公示地圖、放映回傳熱力地圖直觀鮮明地展示了我國電影公益放映點的分布、放映公示及放映回傳情況。
本項目基于電影公益放映實際情況進行設計,已可滿足當前運營管理服務需求,但對標實時更新的信息技術與不斷發展的電影公益放映事業,還需進一步升級完善。從技術上看,數據可視化技術、智能化技術的進一步發展,Echarts 圖表庫的逐漸豐富,將為完善細化電影公益放映數據綜合服務拓展新視角、提供新思路。從服務中國電影事業產業發展來看,持續豐富的公益放映場景,放映智能新終端、移動播控的投入使用,數據的實時傳輸,將為未來更多維度的數據精準化服務提供技術支撐。不斷積累的電影公益放映數據已具備為各級各類管理機構和需求方提供多樣化數據服務的能力,電影公益放映大數據體系也將持續深化,助力城鄉電影公共文化服務體系一體化建設,推動電影公益放映高質量發展。?