在傳統的數據可視化方面,平面的圖表往往占到絕大多數,這樣的圖表常見(jiàn)于現在的紙媒文檔,信息流動(dòng)是單向的,用戶(hù)只能接受媒體傳遞來(lái)的信息,媒體并不能接受用戶(hù)的反饋并調整,這樣就限制了傳遞的信息量。
+----------------+ +----------------+
| | 單向 | |
| media +--------->+ human |
| | | |
+----------------+ +----------------+
想要改變這樣的局面,就必須讓媒體可以根據用戶(hù)
+----------------+ +----------------+
| | 雙向 | |
| media +<-------->+--------> human |
| | | |
+----------------+ +----------------+
可能大部分科研工作者需要發(fā)表科研章,對這種交互式的數據數據可視化的需求不是太明顯,但是對于生信開(kāi)發(fā)者來(lái)說(shuō),這確實(shí)是一個(gè)痛點(diǎn)。
要實(shí)現交互,首先要有一個(gè)交互界面的前端,和支撐交互界面的后端,與傳統的軟件開(kāi)發(fā)相同,B+S 模式和 C+S 模式可供選則,權衡某些生信的數據可視化需要高性能計算并在linux cli 里進(jìn)行生產(chǎn),B+S可能是更能解決問(wèn)題的有效方法。
這也是下面幾種語(yǔ)言實(shí)現交互的基礎,在Hplox OpenGene Team 開(kāi)發(fā)的優(yōu)秀的質(zhì)控工具fastp 我們查看它的網(wǎng)頁(yè)的 demo report 的源碼可以看到,作者用到了優(yōu)秀的前端可視化工具 plotly.js,
fastp demo report
http://opengene.org/fastp/fastp.html
這種成熟的工具可以通過(guò)JS代碼在HTML的代碼塊中實(shí)現交互的圖表。 同樣的國內的baidu echart.js 、d3.js 這類(lèi)開(kāi)源的優(yōu)秀類(lèi)庫。
plotly.js gallery
https://plot.ly/javascript/
前不久,華中農業(yè)大學(xué)有一片高達6分的文章,shinyCircos 實(shí)現的交互基礎是Rstudio 出品的 Shiny,在Rstudio shiny 的 gallery 中我們可以找到很多demo,Shiny 的得前端也用到了plotly.js 。
shiny gallery
https://shiny.rstudio.com/
shinyCircos online version
http://shinycircos.ncpgr.cn/
在Python 語(yǔ)言中類(lèi)似的輪子有很多,前面提到的 plotly 提供了Python的 API,可直接通過(guò) pip install plotly 安裝,同樣在 offical site 的 gallery 中我們可以找到很多驚艷的示例代碼。
plotly pyhton API
https://plot.ly/python/
假如我們通過(guò)代碼已經(jīng)實(shí)現了可視化的 html 文件,除了通過(guò)下載到本地的方法,其實(shí)可以直接在局域網(wǎng)中搭建簡(jiǎn)單的 http sever ,在html文件同路徑下一行python代碼搞定,這樣我們可以直接在局域網(wǎng)內的瀏覽器訪(fǎng)問(wèn)。
## port would be 80,8000,8080 some keep for http usually
## port should not be 22 for ssh and 21 for ftp
## sudo maybe need for some port
cd
python3 -m httpserver [port]
聯(lián)系客服