如何在Python中創建交互式可視化?(建議收藏)

2021-01-11 人工智慧研究院

如何在Python中創建交互式可視化。在探索添加更多交互控制項之前,我們將僅以不同格式繪製數據開始。

如果您一直關注我一段時間,會注意到這是數據可視化系列文章中的第三篇。首先使用默認的python可視化庫matplotlib引入了數據可視化。然後,我們學習了如何使用相同的庫在時間序列上創建動畫可視化效果。

今天,我們將學習如何使用Plotly express。Plotly允許用戶在開箱即用的可視化界面上進行交互,並且與Web內容集成起來要容易得多。

情節快遞簡介

plotly express是plotly包裝器,它允許使用更簡單的語法。

受Seaborn和ggplot2的啟發,它經過專門設計,具有簡潔,一致且易於學習的API:只需一次導入,您就可以在一個函數調用中創建豐富的交互式圖,包括刻面,地圖,動畫,和趨勢線。

在實際上的兩行代碼中,您可以擁有一個漂亮的交互式圖表。它很簡單:

import plotly.express as pxfig = px.line(x='x data set', y= 'y data set')fig.show()

採購和準備數據

與我們在使用Python進行數據可視化系列文章中的前幾篇文章中所做的幾乎相同,我們將使用COVID-19數據。儘管在本博客中,我們將不介紹導致我們進行數據採購和格式化的熊貓操作,但如果您想進一步理解它,請閱讀此文章。

我們將使用以下數據代碼來獲取和格式化數據:

import plotly.express as pximport numpy as npimport pandas as pdurl = 'https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/time_series_covid19_deaths_global.csv'df = pd.read_csv(url, delimiter=',', header='infer')df_interest = df.loc[df['Country/Region'].isin(['United Kingdom', 'US', 'Italy', 'Brazil', 'India']) & df['Province/State'].isna()]df_interest.rename( index=lambda x: df_interest.at[x, 'Country/Region'], inplace=True)df1 = df_interest.transpose()df1 = df1.drop(['Province/State', 'Country/Region', 'Lat', 'Long'])df1 = df1.loc[(df1 != 0).any(1)]df1.index = pd.to_datetime(df1.index)df1 = df1.diff() #day on day changes

創建圖表

要在圖表上添加一行,我們實際上需要兩行代碼:

fig = px.line(x=df1.index, y= df1[df1.columns[0]],title = 'Daily Deaths due to COVID-19', name = df1.columns[0])fig.show()

要添加更多行,我們需要.add_scatter()屬性。使用循環,我們可以添加所有範圍內的國家/地區。

fig = px.line()for i,n in enumerate(df1.columns):fig.add_scatter(x=df1.index, y= df1[df1.columns[i]], name= df1.columns[i])

多線圖

最後,我們可以考慮在圖表中添加更多細節。我個人喜歡在圖中突出顯示不同的數據點。

fig.update_traces(mode='markers+lines')

帶有標記的圖形

最後但並非最不重要的一點是,添加相關的軸標籤,設置字體大小並替換默認模板。

fig.update_layout(title = 'Daily Deaths due to COVID-19' ,xaxis_title = 'Dates' ,yaxis_title = 'Number of Deaths' ,font = dict(size = 25) ,template = 'plotly_dark' #"plotly", "plotly_white", "plotly_dark", "ggplot2", "seaborn", "simple_white", "none")

既然我們已經了解了如何快速將不同類型的可視化組合在一起,那麼現在該是我們用交互式控制項增強可視化效果的時候了!

範圍滑塊

首先,用一行代碼,我們將添加一個範圍滑塊-一個漂亮的控制項,用於允許用戶專注於時間序列的特定片段。

fig.update_xaxes(rangeslider_visible=True)

範圍焦點

如果我們的用戶始終關注時間序列的某些部分,該怎麼辦?然後,我們可以直接構建這些控制項!

fig.update_xaxes(rangeslider_visible=True, rangeselector=dict( buttons=list([ dict(count=7, label="1w", step="day", stepmode="backward"), dict(count=1, label="1m", step="month", stepmode="backward"), dict(count=2, label="2m", step="month", stepmode="backward"), dict(step="all") ]), font = dict( color='#008000', size = 11), ))

經歷了焦點範圍上的上一組功能之後,可以輕鬆想像構建自定義按鈕。情節很簡單地表達了這一點。讓我們看一下自定義按鈕,這些按鈕可讓我們專注於各個國家。

fig.update_layout(updatemenus=[dict(type="buttons",direction="right",active=0,x=0.5,y=1.03,buttons=list([dict(label=df1.columns[0],method="update",args=[{"visible":[True,False,False,False,False]},{'showlegend':True}]),dict(label=df1.columns[1],method="update",args=[{"visible":[False,True,False,False,False]},{'showlegend':True}]),dict(label=df1.columns[2],method="update",args=[{"visible":[False,False,True,False,False]},{'showlegend':True}]),dict(label=df1.columns[3],method="update",args=[{"visible":[False,False,False,True,False]},{'showlegend':True}]),dict(label=df1.columns[4],method="update",args=[{"visible":[False,False,False,False,True]},{'showlegend':True}]),dict(label='All',method="update",args=[{"visible":[True,True,True,True,True]},{'showlegend':True}]),]),)])

Plotly express絕對是用於數據可視化的絕佳工具,該工具非常易於使用,並且非常Python化。在此篇中,我們只是簡單介紹了它所提供的內容。進一步探索該庫,可能性真的無限多!

相關焦點

  • python交互式shell-ipython
    前言在寫Python的時候,有時候需要命令行來測試一段代碼,這時候就會用到交互式的shell。直接輸入python就可以進入默認的shell,但是都沒有提示,用起來不是很爽。這時候就可以用上ipython。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    01為什麼使用PyQtGraph庫我們知道,在Python中,已經有了很多可供選擇的數據可視化庫。雖然該庫完全用python編寫,但其內部使用了Qt的GraphicsView框架及numpy計算庫,因此其在圖形繪製及數據處理速度方面有著極其優異的表現。同時,PyQtGraph是在MIT開源許可下發布的。該庫可運行於Python2和Python3上,其兩個主要特色為:為數據(繪圖,視頻等)提供了快速可交互式的圖形(2D和3D)顯示。
  • 從數據可視化到交互式數據分析
    這個過程中相當多的步驟完全是人為的(參考上圖中的紅框):界定難題,生成問題,解釋結果,生成推論和新問題。這完全是人為操作,而非技術運作。這讓人不禁想問:我們對人類如何用數據思考了解多少?我們如何擴展我們的知識,從而改進這個過程?(3)可視化只是流程的一小部分對於我們這樣的數據可視化人員來說,這是重要的觀察結果。
  • Python語言中使用pyqtgraph庫實現數據可視化
    背景在Python程式語言中,matplotlib是一種常用的用於數據可視化的繪圖庫,它提供了一套和matlab相似的命令API,開發者可以僅需幾行代碼,便可生成如直方圖,功率譜,條形圖,錯誤圖,散點圖等圖形,適用於交互式繪圖,而且也可以方便地將它作為繪圖控制項嵌入到GUI應用程式中
  • 如何構建一個基於可視化理論的完美Python圖表?
    本文介紹了能從經典的《定量信息的視覺展示》(Edward Tufte)中學到的大部分知識,並向你展示以及如何在Python中實現它。信息展示的支柱圖表的完整性這代表演示的真實性。通過確保正確縮放坐標軸並反映趨勢,可以如實地解釋數據。從長遠來看,真實總是更有價值。每個人都至少目睹過一個帶有非線性y軸的圖,以使假設看起來更有說服力——請發誓永遠不會這樣做。
  • 這幾個常用的python庫你需要知道
    python可以說是近幾年最火熱、最實用的、最容易上手的工具之一了。功能強大、應用廣泛,可以幫你搜集工作數據,還能幫你下載音樂,電影,於是就掀起了一波學習python的大潮,小編也毫不猶豫的加入了。但是對於向小編一樣的小白來說,剛開始學習還是有些困難的,需要首先了解python的一些基礎知識。所以小編就整理了一些常用的python庫,希望對正在學習python的小夥伴有所幫助。1.MatplotlibMatplotlib是一個用於創建二維圖和圖形的底層庫。
  • 可視化工具不知道怎麼選?深度評測5大Python數據可視化工具
    作者 | 劉早起來源 | 早起Python(ID: zaoqi-python)相信很多讀者學習Python就是希望作出各種酷炫的可視化圖表,當然你一定會聽說過Matplotlib、Pyecharts、Seaborn、Plotly、Bokeh這五大工具,本文就將通過真實繪圖來深度評測這五個Python數據可視化的庫,看看到底這幾種工具各有什麼優缺點
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 超硬核的 Python 數據可視化教程!
    matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。Seaborn是一個基於matplotlib的高級可視化效果庫,針對的點主要是數據挖掘和機器學習中的變量特徵選取,seaborn可以用短小的代碼去繪製描述更多維度數據的可視化效果圖其他庫還包括Bokeh(是一個用於做瀏覽器端交互可視化的庫,實現分析師與數據的交互);Mapbox(處理地理數據引擎更強的可視化工具庫)等等本篇文章主要使用
  • 使用biopython可視化染色體和基因元件
    基因組結構元件的可視化有多種方式,比如IGV等基因組瀏覽器中以track為單位的展示形式,亦或以circos為代表的圈圖形式,比如在細胞器基因組組裝中,基因元件常用圈圖形式展示,示例如下
  • Python可視化工具推薦:圖片交互性行極佳的Plotly
    1、 簡單介紹一般大家在學習python機器學習的時候,用的最多的可視化的包就是matplot和seaborn, 這2個可視化的優點在於門檻低,代碼容易理解,並且容易上手。但是對於plotly來說的話,我們直接可以用python來寫,並且代碼量比java的少很多,我們可以直接將我們熟悉的python list, numpy, pandas放進去就可以畫圖,並且給出的效果和echart的圖一摸一樣。另外要提一點的是python plotly也是可以用來做動圖的,我們後面會給大家介紹一種用plolty做出來的用於展示Kmeans算法過程的動圖。
  • 如何python創建炫酷的動態二維碼
    今天教大家如何一步一步去製作一個炫酷的二維碼這個需要用到我們的python語言,並且需要安裝一個製作二維碼的庫Myqr第一步安裝Myqr,安裝python就不在介紹了,安裝Myqr庫。,shift+右鍵,在彈出的右鍵菜單中單擊「在此出打開命令窗口」,我們進入cmd控制臺(進入控制臺方法較多,不在贅述)第二步 進入控制臺後 輸入 pip install Myqr 回車,我們只要等待庫自行安裝就好了,安裝完成後關閉命令控制臺第三步 創建一個python文件 mycode.py.導入下面的代碼,
  • 這裡有8個流行的Python可視化工具包,你喜歡哪個?
    用 Python 創建圖形的方法有很多,但是哪種方法是最好的呢?當我們做可視化之前,要先明確一些關於圖像目標的問題:你是想初步了解數據的分布情況?想展示時給人們留下深刻印象?也許你想給某人展示一個內在的形象,一個中庸的形象?
  • 如何用Python創建音樂可視化器
    本文將演示如何使用Python創建音樂可視化器。如何可視化音樂?我們首先需要知道音樂是如何組成的,以及如何將它可視化。音樂是聲音的組合。聲音是我們耳朵檢測到的振動。振動由頻率和振幅(速度和響度)定義。最簡單的可視化方法是畫一排條形圖。
  • 用R也可以跑Python了
    numpy$exp(x)交互地使用Python您可以在R中創建交互式您在Python中創建的對象可在R中使用(反之亦然)。通過使用repl_python()函數,可以使Python和R交互。python中創建的對象你可以在利用py object獲取python裡的對象。
  • 強烈推薦一款Python可視化神器!強烈必備!
    受 Seaborn 和 ggplot2 的啟發,它專門設計為具有簡潔,一致且易於學習的 API :只需一次導入,您就可以在一個函數調用中創建豐富的交互式繪圖,包括分面繪圖(faceting)、地圖、動畫和趨勢線。 它帶有數據集、顏色面板和主題,就像 Plotly.py 一樣。
  • Python中的簡單人臉檢測(建議收藏)
    如何使用OpenCV庫檢測圖像中的人臉在本文中,將展示如何使用Python構建簡單的面部檢測器。建立一個可以檢測人臉的程序是一個很好的項目,可以開始使用計算機視覺。從名稱可以理解,我們將編寫一個程序來檢測圖像中的面部。當我說「程序」時,您可以將其理解為教機器做什麼。我喜歡使用教學而不是編程,因為這實際上是我們正在做的事情。
  • 掌握了這24個頂級Python庫,你就是大神!
    Beautiful Soup是一個HTML和XML解析器,可為被解析的頁面創建解析樹,從而用於從web頁面中提取數據。從網頁中提取數據的過程稱為網頁抓取。(response, 'html.parser')for anchor in soup.find_all('a'):print(anchor.get('href', '/'))建議閱讀下面的文章,學習如何在Python中使用Beautiful Soup:《新手指南:在Python中使用BeautifulSoup進行網頁抓取》Scrapy
  • 這10個python數據可視化庫,通吃任何領域
    儘管matplotlib有助於了解數據,但它對於快速、輕鬆地創建可發布的圖表用處不大。正如Chris Moffitt在他的Python可視化工具的概述中所稱,matplotlib「功能非常強大,但同時也很複雜」。
  • Python 三十大實踐、建議和技巧
    希望這些訣竅能在實際工作中幫助大家,並且學到一些有用的知識。1、使用 python 3由於官方從2020年1月1日起就停止了對python2.7的更新支持,因此本教程的大部分例子都只能在python 3環境下運行。如果你仍然在使用2.7版本,請先升級到python 3。