這次,我們講彩色的數據挖掘

編程語言 數據挖掘 Python Java 財新數據可視化實驗室 2017-06-07

六一前夕,刷屏的那成千上萬張煙盒,還記得吧?就是下面這張

這次,我們講彩色的數據挖掘

《非平裝煙盒》(項目鏈接:http://datanews.caixin.com/mobile/notobacco)

是財新數據可視化實驗室為世界無煙日(5月31日)所做的專題策劃。11670張煙盒圖片,來自世界各地,與11670條數據一一對應。怎麼做到的?

三個問題之後,沒有祕密。

特別福利:作品涉及的煙盒圖片相關數據已經在《非平裝煙盒》項目末頁提供下載鏈接。

Q1:這麼多張煙盒圖片,如何收集?

陳慶、劉彥佐(數據採集):

首先確認目標站點的組織結構與目標信息所在的位置,利用Java語言下基於HttpClient、HtmlUnit、Jsoup、Selenium與BerkeleyDB為核心的採集平臺以廣度優先策略,(廣度優先算法就是從種子鏈接開始,講種子鏈接中包含的子鏈接提取出來,放入隊列排隊抓取,被處理過的鏈接需要放入Visited表,處理一個鏈接前需要先判定該鏈接是否存在於Visited表中,如果存在則認定為處理過的鏈接直接拋棄,循環往復。)開始對目標站點的圖片鏈接進行遍歷讀取文件流並以BASE64的形式存入MongoDB數據庫,同時對該圖片文字信息特徵進行數據索引。最終將圖片輸出以帶有國別、品牌等信息為文件名的JPG/PNG圖片並壓縮打包。

這次,我們講彩色的數據挖掘

Q2:從11670個煙盒,到11670條數據,都經歷了些什麼?

羅晨(數據分析、撰稿):

1. 分析之前,先做數字化

前序同事抓取了中國菸草網站的所有煙盒圖片,每一張圖片都用“地區+香菸類型”的格式來進行命名,這個命名實在太貼心了,幫我省掉了整理命名的麻煩步驟。作為數據分析人員,我首先用DOS命令獲取了所有圖片的名稱,再利用Python給每一張圖片重新以阿拉伯數字命名,在數字和字符串間建立了一一對應的關係,方便後期進行分類、抽樣操作。

2. 物以類聚,色以群分

其實最開始的想法挺簡單——打算以菸民的煙盒評分作為切入點,並沒有想到用高大上的色彩分析。後來經過團隊的討論,並參考了清華大學向帆老師的春晚色彩分析(具體請見向帆的博客:《海王星上看“春晚”》),決定從煙盒的顏色著手。

顏色,不僅是直觀的視覺感知,更是地區文化的偏好,譬如中國人對紅色、黃色情有獨鍾,這種對於特定色彩的執著可以說是鑲嵌在基因裡了。之後面臨的是煙盒顏色的處理問題,如果將煙盒做單純拼接,那麼會顯得凌亂,難以發現規律。於是決定使用Python進行顏色提取,用了PIL(Python 3中改名為Pillow)模塊後,發現用不復雜的代碼就足以解決主色調提取的問題,順利地得到了一萬餘張煙盒的主色調,數據格式是包含RGB數值的元組。

各地區的煙盒差異不僅體現在顏色上,也體現在視覺標識上。如果要自動化地從煙盒圖片上識別形狀,可能只有機器學習的方法,但是身為文科生的我並不會。所以就只好仰賴人工的內容分析了,選擇了幾個具有代表性的對比地區後,首先要做的是抽樣(普查成本太高)。我的做法是對選中地區的煙盒圖片進行簡單隨機抽樣,然後自己構建類目對樣本進行編碼,最後用Excel和SPSS進行統計分析,得出統計結果。

(一點感受——煙盒色彩分析非常好玩,因為其中需要進行人工校驗,所以基本把各種圖片都瀏覽過一遍,發現很多特別神奇的包裝,真可謂大開眼界。我認為這是一個純探索性研究,沒想到最後能得出許多有意義的結論,真的很感謝財新數據可視化實驗室,讓一名實習生可以有機會在一個創新方向上深挖,也感謝編輯老師在項目期間給我足夠的時間,沒有催稿,更感謝所有項目組的夥伴們,協同才是最優質的動力。)

Q3: 關於設計&前端開發,想說點啥?

佳昕(設計及開發):

這個項目的設計宗旨只一個——釋放數據的魅力,別拘著。但並不容易……

開始的設計草圖:

這次,我們講彩色的數據挖掘

但是體會出一些問題,比如——

問題1:進入主題慢;

問題2:世界概況應該作為“輔助信息”放在後半部分

問題3:出於用戶角度考量,可點擊的色譜應該放在右側,便於移動端用戶操作。

(第一頁那個奇怪的人形,其實是《志明與春嬌》裡對著兩位主角喊“damai smoke”的港警,本來打算用一段gif扔出戒菸的主題,但後面覺得與主題調性不搭,遂……割愛刪掉。)

和黃晨老師討論後的設計草圖:

這次,我們講彩色的數據挖掘

增加電影腳本的感覺,利用動畫快速回顧歷年控煙日主題之後迅速進入主題,解釋什麼是平裝煙盒,平裝煙盒本應如何,再利用翻轉效果展示“現實”卻是怎樣的。

1-2-4-2195個煙盒的設想很好的發揮了煙盒封面聚集起來給讀者的視覺震撼,“數據來源於生活,迴歸到生活”是和黃晨老師討論後令我印象深刻的一句話。

關於開發,開頭動畫利用css的動畫效果,後面色譜生成與圖片交互主要應用d3.js。最大的難點在於圖片太多,移動端加載出現崩潰,一度考慮過只選取其中一部分煙盒圖片配合點擊,但覺得這樣浪費了挖掘的圖片,也有違數據真實,後面嘗試把加載圖片的工作放到點擊動作之後,這樣提高了加載效率。

不過成品中還是有很多細節需要敲打,根據不同機型的讀者反饋,項目加載時間還是過長,在之後會繼續跟進完善。

編輯絮語:

這個選題的靈感最初來自於20116年11月財新網的一篇報道,《全球煙盒警示面積排行 中國大陸僅列115位》,其中有一句話“中國大陸是世界上煙盒最漂亮的國家和地區之一”。什麼是漂亮?紅的,黃的,金燦燦的?色彩是最本源的可視化,直覺數據可視化用於展現出這所謂的“漂亮”是非常對路的。於是有了後面的工作。

過程中團隊成員集思廣益,有很多大膽突破的想法,經歷了“從少到多,再從多到少”的迭代過程,有很多不錯的想法最終囿於篇幅而被捨棄掉了。不論是數據新聞報道還是融媒體報道,要警惕陷入“看,我什麼都會”的誤區當中,一切技巧最終是服務於主題的。用產品語言說就是,我們既要知道我們要做什麼,更要知道我們不做什麼。

再次提醒福利:作品涉及的煙盒圖片相關數據已經在《非平裝煙盒》項目末頁提供下載鏈接。

相關推薦

推薦中...