精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何基于Plotly和ipywidgets在Jupyter Notebook中創建交互可視化內容

zhKF_jqr_AI ? 來源:未知 ? 作者:李倩 ? 2018-10-26 09:26 ? 次閱讀

編者按:Zalando數據工程師Alex Martinelli介紹了如何基于Plotly和ipywidgets在Jupyter Notebook中創建交互可視化內容。

本文介紹了如何在Jupyter Notebook中創建交互內容。所謂內容,主要指可視化內容。不過我們很快就會看到,這里的可視化內容不僅包括通常的圖表,還包括有助于探索數據的交互界面和動畫。

我將首先簡要介紹數據可視化,并更準確地定義本文中交互的范圍和含義。接著我將快速概覽所涉及的工具(Plotly和ipywidgets),順便提供一些關于Jupyter生態系統的通用建議。最后,我將展示一些具體的例子,這些例子大部分來自我的個人項目,我也將同時介紹這些交互內容對我項目的推進作用。這些例子是為了演示這類工具在Jupyter這一強大框架下的能力,希望這能推動你在自己的項目上嘗試這些技術,同時廣泛傳播這些技術。

介紹

數據可視化是一個優秀數據科學家(或任何涉及數據處理的角色)的核心技能之一。一方面,它能讓你(或者團隊的其他成員)更好地理解數據集的本質;另一方面,它能讓你向(懂技術、不懂技術的)外部受眾傳遞合適的消息。

在網上搜索“數據可視化”時,D3.js是推薦最多的庫之一。但有人斷言,你越是需要個性化的定制方法,就越有必要深入學習這一工具。相反,如果你的目標是快速、“標準”可視化,那么使用你選擇的編程語言提供的那些包也許更合適。

Python生態系統而言,一開始免不了要和Matplotlib基礎構件打交道,接著可能擴大到高層替代庫(例如,Seaborn、Bokeh)。此外,特別是對數據科學圖表而言,越來越多人選擇使用Jupyter notebook。我相信這背后的主要原因是Jupyter將不同的媒介很好地封裝成了一個簡單的解決方案:代碼、文字、可視化。它不僅讓你的整個工作流程更方便、更有樂趣,還大大簡化了工作成果的分享(面向教學,也面向協作)。

我個人發現在Jupyter下使用Matplotlib + Seaborn組合最符合我的可視化需求,比Pandas自帶的繪圖功能要強。需要動畫功能時,Matplotlib 1.1版以來提供的簡單動畫框架提供了很好的易用性和結果美觀性的折衷。

不過,總有一個時刻,我們會發現自己需要更多。并不是說完全轉移到全新的工具,而是根據需求使用新的工具。在我看來,交互可以分為兩類:

交互式圖表:顯示當前瀏覽的特定數據點或區域的實時信息,高亮/隱藏特定內容。

用于內容交互的部件:從圖表擴展至其他媒介和內容,一般需要復雜UI元素以收集額外輸入。

目前而言,我發現Plotly能很好地解決第一個需求。至于后一個需求,我專門搜索了能夠方便地嵌入Jupyter的方案,這樣我就可以將任何notebook轉變為交互式面板。最后我找到了ipywidgets.

工具

在詳細介紹之前提到的工具之前,我想先分享一下個人使用的Python、Jupyter相關技術棧:

Anaconda(Python發行版)

使用virtualenv管理多個隔離的Python環境(或者使用Anaconda自帶的環境管理方案)

使用nbcondakernels管理Jupyter notebook的多個環境/核

使用Jupyter擴展定制Jupyter

Plotly

使用Plotly創建和分享交互式圖表極其便利。它甚至為圖表提供了無縫的web托管——公開內容免費托管,私有內容需付費。當然,如有必要,Plotly完全可以離線使用,直接在notebook中渲染交互式圖表,或者導出至(可交互)HTML文件。

如果這還不夠,Plotly還有兩個更有吸引力的特性:plot_mpl和cufflinks(cufflink意為袖扣)。

plot_mpl可以直接將純matplotlib圖像轉換為可交互的Plotly圖像(目前轉換尚不完美,但這一功能正在飛速改善)。

cufflinks讓Plotly可以自動綁定Pandas的dataframe。有了自動綁定,只需單次調用,便可基于dataframe內容得到高質量的數據可視化,例如自動解析日期數據,用恰當的格式顯示;推斷色調;管理標簽

一般情況下,開始使用Plotly極其方便,只需運行:

pip install plotly

pip install cufflinks

接著為notebook選擇在線模式或離線模式。然后只需記住,.iplot()是在Jupyter中顯示內容的神奇語句。

ipywidgets

ipywidgets可以很方便地在notebook中創建交互界面。同樣,它很好地平衡了靈活性和易用性。

依照安裝步驟安裝ipywidgets后,就可以直接使用了。ipywidgets提供了供交互界面使用的組件,例如滑動條、復選框、按鈕、文本框,等等。

ipywidgets上手很容易,理解交互函數即可。交互函數能夠基于傳入的參數自動創建部件。例如,傳入一個布爾值參數會自動生成對應的復選框;傳入一個列表會自動生成下拉菜單。

ipywidgets的這些機制相當直截了當,官方文檔的說明也很棒,所以現在讓我們直接進入下一節。

作品展示

為了演示到目前為止講解的內容,也為了無恥地給自己打廣告,我將舉幾個源自我個人項目的例子。

我的所有項目都能在GitHub上找到(5agado),其中一些簡單項目是自包含、可復現的notebook。

例一:Fitbit面板

量化生活踐行者,以及想要為個人數據創建簡易面板(但不打算創建完整的面板應用)來探索數據、獲取洞見的人,也許會對這個項目特別感興趣。

我的Fitbit睡眠數據是一個需要可視化不同統計量(睡眠效率、睡眠得分、初次入睡時間等)、不同尺度(日、周、年等)數據的例子。使用Seaborn的刻面圖(factorplot)可以一次性可視化一組目標統計量。

這在簡單情形下很有用,但在復雜情形下就不那么有效了。例如,可視化每月的工作日數據:

上圖效果很差,呈現的信息很雜亂,而且對我這種色彩辨識能力不強的人而言,很難看清數據。相反,Plotly為這種情況提供了很好的解決方案,我們可以通過三種不同方式創建Plotly圖表:

直接將matplotlib圖像傳給iplot_mpl方法

使用Plotly語法從頭創建圖表

使用cufflinks直接基于Pandas的dataframe繪圖

就這一情形而言,最后一種方式最方便,也最準確。

例二:營養學數據庫

有時我們需要為一些結構化內容創建一個簡易界面。例如,我在探索營養學數據的時候就有這個需求。我探索的是USDA National Nutrient Database,它提供了豐富的數據,相對而言比較復雜,不過,使用Python和Pandas分析這個數據庫倒是不難。

有人也許會主張這其實屬于數據庫領域,使用SQL工具更合適。這個主張也許是對的,但我還是想展示下,在Jupyter下使用ipywidgets完成這一任務有多容易。相比使用單獨的數據庫系統,這可能是一個更好的臨時方案,特別是在數據探索階段。

從上圖我們可以看到,ipywidgets使用起來很方便,只需將原Python函數和需要自動映射到部件的參數傳給interact函數:

food(食物):空列表,將被轉換為文本框

nutrient(營養物質):將被轉換為下拉菜單

例三:動畫

如前所述,一旦具備了良好的工具,交互內容在各種場景下都有用武之地,例如動畫。

將(min,max,step)元組傳給interact函數后,能自動生成對應的滑動條。以不同的分辨率或復雜度查看動畫時,這樣一個簡單的整數滑動條很有幫助。例如,模擬[康威生命游戲]:

我們還可以定制界面,以快速瀏覽數據和相關分析結果。比如,我曾經可視化在貓狗數據集上訓練的CNN中間層的輸出:

現在有很多可視化的框架和工具,用于機器學習任務的特別多,不過,有時候像上面那樣快速粗暴的解決方案可以提供所有實際需要的信息和功能,同時節省大量時間。

結語

上面的例子僅僅使用了工具的基本功能。例如ipywidgets僅僅使用了interact函數和類型推斷。ipywidgets其實還支持自定義部件和部件組合,詳見官方文檔。

我希望這篇文章能夠展現這些工具的簡單性和可定制性。同時,我也希望能得到關于數據可視化工具方面的反饋,特別是包含3D建模和動畫的框架。

最后安利下dunovank/jupyter-themes,這個GitHub倉庫提供了許多Jupyter主題和可視化風格。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 可視化
    +關注

    關注

    1

    文章

    1181

    瀏覽量

    20897
  • 數據集
    +關注

    關注

    4

    文章

    1205

    瀏覽量

    24649

原文標題:Plotly與ipywidgets:交互可視化很容易

文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    可視化MES系統軟件

    單品在生產線上的裝配制造過程,設計交互界面,使企業實現車間生產數據各方面應用的可視化管理,為企業節約成本、創造更多的價值。2、MES系統軟件架構針對MES系統軟件制造業車間的應用情
    發表于 11-30 19:55

    IDE的交互式文檔Jupyter Notebook詳解

    IDE之Jupyter交互式文檔Jupyter Notebook簡介、安裝、使用方法詳細攻略
    發表于 12-26 10:38

    【PYNQ-Z2試用體驗】Jupyter Notebook體驗

    ,接下來我們來體驗一下。交互式Python瀏覽器地址欄輸入開發板的IP地址,我這里是192.168.1.99,可登錄到jupyter notebook,如下圖所示:圖1 密碼為xilinx,登錄后如下
    發表于 02-17 19:37

    你絕沒用過的一款高逼格空間可視化工具

    ='geojson')數據導入進來后,作一些簡單的自定義設置,就可以生成逼格滿滿的空間可視化圖:除了 Jupyter Notebook 展示,還可以導出為可
    發表于 07-30 04:00

    VR與三維可視化電廠的作用

    才會擁有的體驗。智能培訓模塊采用虛擬現實技術,利用數字電廠的數據,建立相應的軟硬件平臺,利用定制的電廠三維模型,方便快捷地實現三維展示或者VR體驗,提供安全的多用戶虛擬世界,通過交互式的可視化
    發表于 12-03 15:03

    plotly可視化繪制嵌入式子圖的方法

    plotly可視化繪制嵌入式子圖# 嵌入式子圖import plotly as pyimport plotly.graph_objs as gopyplt
    發表于 12-14 07:08

    華秋DFM可視化BOM交互焊接工具——SMT工廠、PCB工程師的福音來了!

    箭頭標識位置按照位號、封裝、規格值篩選某個器件,右邊箭頭標識位置篩選貼片元件及插件元件。02工具鏈接分享使用可視化BOM交互焊接工具,如需分享給別人使用時可點擊“復制鏈接”,也可以
    發表于 12-23 10:59

    華秋DFM推出可視化BOM交互焊接工具,助力SMT工廠提升效率

    箭頭標識位置按照位號、封裝、規格值篩選某個器件,右邊箭頭標識位置篩選貼片元件及插件元件。02工具鏈接分享使用可視化BOM交互焊接工具,如需分享給別人使用時可點擊“復制鏈接”,也可以
    發表于 12-23 11:16

    五大最實用的Jupyter Notebook擴展插件

    Jupyter Notebook是當前一種十分流行的基于網頁的開發環境,它靈活、高度可擴展,不僅允許用戶創建和共享含有代碼的文檔,還可以植入公式、可視化圖片和描述性的文本等,是大數據分
    的頭像 發表于 03-20 16:35 ?11.4w次閱讀

    以后Jupyter也能做可視化Debug了

    Notebook 都各有特色,Jupyter 適合做數據分析這些需要可視化的操作,PyCharm 更適合做完整的 Python 項目。然而,因為交互式操作,很少會有開發者想到用
    的頭像 發表于 01-06 16:09 ?2579次閱讀

    神器jupyter的優勢和使用教程

    Python 代碼編輯器怎么選?PyCharm、VS Code、Jupyter Notebook 都各有特色,Jupyter 適合做數據分析這些需要可視化的操作,PyCharm 更適合
    的頭像 發表于 02-05 09:36 ?8112次閱讀
    神器<b class='flag-5'>jupyter</b>的優勢和使用教程

    常用的五種Jupyter Notebook擴展插件

    Jupyter Notebook 是一個很棒的教學、探索和編程環境,但其功能不足也是出了名的。幸好,有許多方法可以改進這個不錯的工具,如 Jupyter Notebook 擴展工具。
    的頭像 發表于 09-26 10:35 ?2430次閱讀

    Jupyter notebook超算平臺上使用的詳細教程

    Jupyter Notebook 的本質是一個 Web 應用程序,便于創建和共享文學程序文檔,支持實時代碼,數學方程,可視化和 markd
    的頭像 發表于 11-23 15:42 ?1474次閱讀
    <b class='flag-5'>Jupyter</b> <b class='flag-5'>notebook</b><b class='flag-5'>在</b>超算平臺上使用的詳細教程

    什么是 Jupyter Notebook

    Jupyter Notebook 是一個 Web 應用程序,便于創建和共享文學程序文檔,支持實時代碼、數學方程、可視化和 Markdown
    的頭像 發表于 10-16 11:15 ?3807次閱讀
    什么是 <b class='flag-5'>Jupyter</b> <b class='flag-5'>Notebook</b>

    Altair:一個漂亮易用的數據可視化

    Altair 是一個基于Jupyter Notebook的強大可視化庫。它提供了強大而簡潔的可視化語法,使我們能夠快速構建各種統計可視化圖表
    的頭像 發表于 10-21 10:43 ?888次閱讀
    Altair:一個漂亮易用的數據<b class='flag-5'>可視化</b>庫