完全免費,簡化版Plotly推出,秒繪各類可視化圖表

2020-12-22 AI科技大本營

作者 | Peter

來源 | Python編程時光

今天給大家推薦一個可視化神器 - Plotly_express ,上手非常的簡單,基本所有的圖都只要一行代碼就能繪出一張非常酷炫的可視化圖。

以下是這個神器的詳細使用方法,文中附含大量的 GIF 動圖示例圖。

環境準備

本文的是在如下環境下測試完成的。

Python3.7Jupyter notebookPandas1.1.3Plotly_express0.4.1其中 Plotly_express0.4.1 是本文的主角,安裝它非常簡單,只需要使用 pip install 就可以。

$ python3 -m pip install plotly_express

工具概述

在說 plotly_express之前,我們先了解下plotly。Plotly是新一代的可視化神器,由TopQ量化團隊開源。雖然Ploltly功能非常之強大,但是一直沒有得到重視,主要原因還是其設置過於繁瑣。因此,Plotly推出了其簡化接口:Plotly_express,下文中統一簡稱為px。

px是對Plotly.py的一種高級封裝,其內置了很多實用且現代的繪圖模板,用戶只需要調用簡單的API函數即可實用,從而快速繪製出漂亮且動態的可視化圖表。

px是完全免費的,用戶可以任意使用它。最重要的是,px和plotly生態系統的其他部分是完全兼容的。用戶不僅可以在Dash中使用,還能通過Orca將數據導出為幾乎任意文件格式。

官網的學習資料:https://plotly.com/

px的安裝是非常簡單的,只需要通過pip install plotly_express來安裝即可。安裝之後的使用:

import plotly_express as px

開始繪圖

接下來我們通過px中自帶的數據集來繪製各種精美的圖形。

gapmindertipswind

3.1 數據集

首先我們看下px中自帶的數據集:

import pandas as pdimport numpy as npimport plotly_express as px # 現在這種方式也可行:import plotly.express as px# 數據集gapminder = px.data.gapmindergapminder.head # 取出前5條數據

我們看看全部屬性值:

3.2 線型圖

線型圖line在可視化製圖中是很常見的。利用px能夠快速地製作線型圖:

# line 圖fig = px.line( gapminder, # 數據集 x="year", # 橫坐標 y="lifeExp", # 縱坐標 color="continent", # 顏色的數據 line_group="continent", # 線性分組 hover_name="country", # 懸停hover的數據 line_shape="spline", # 線的形狀 render_mode="svg" # 生成的圖片模式)fig.show

再來製作面積圖:

# area 圖fig = px.area( gapminder, # 數據集 x="year", # 橫坐標 y="pop", # 縱坐標 color="continent", # 顏色 line_group="country" # 線性組別)fig.show

3.3 散點圖

散點圖的製作調用scatter方法:

指定size參數還能改變每個點的大小:

px.scatter( gapminder2007 # 繪圖DataFrame數據集 ,x="gdpPercap" # 橫坐標 ,y="lifeExp" # 縱坐標 ,color="continent" # 區分顏色 ,size="pop" # 區分圓的大小 ,size_max=60 # 散點大小)

通過指定facet_col、animation_frame參數還能將散點進行分塊顯示:

px.scatter( gapminder # 繪圖使用的數據 ,x="gdpPercap" # 橫縱坐標使用的數據 ,y="lifeExp" # 縱坐標數據 ,color="continent" # 區分顏色的屬性 ,size="pop" # 區分圓的大小 ,size_max=60 # 圓的最大值 ,hover_name="country" # 圖中可視化最上面的名字 ,animation_frame="year" # 橫軸滾動欄的屬性year ,animation_group="country" # 標註的分組 ,facet_col="continent" # 按照國家country屬性進行分格顯示 ,log_x=True # 橫坐標表取對數 ,range_x=[100,100000] # 橫軸取值範圍 ,range_y=[25,90] # 縱軸範圍 ,labels=dict(pop="Populations", # 屬性名字的變化,更直觀 gdpPercap="GDP per Capital", lifeExp="Life Expectancy"))

3.4 地理數據繪圖

在實際的工作中,我們可能會接觸到中國地圖甚至是全球地圖,使用px也能製作:

px.choropleth( gapminder, # 數據集 locations="iso_alpha", # 配合顏色color顯示 color="lifeExp", # 顏色的欄位選擇 hover_name="country", # 懸停欄位名字 animation_frame="year", # 注釋 color_continuous_scale=px.colors.sequential.Plasma, # 顏色變化 projection="natural earth" # 全球地圖 )

fig = px.scatter_geo( gapminder, # 數據 locations="iso_alpha", # 配合顏色color顯示 color="continent", # 顏色 hover_name="country", # 懸停數據 size="pop", # 大小 animation_frame="year", # 數據幀的選擇 projection="natural earth" # 全球地圖 )

fig.show

px.scatter_geo(gapminder, # 數據集 locations="iso_alpha", # 配和color顯示顏色 color="continent", # 顏色的欄位顯示 hover_name="country", # 懸停數據 size="pop", # 大小 animation_frame="year" # 數據聯動變化的選擇 #,projection="natural earth" # 去掉projection參數)

使用line_geo來製圖:

fig = px.line_geo( gapminder2007, # 數據集 locations="iso_alpha", # 配合和color顯示數據 color="continent", # 顏色 projection="orthographic") # 球形的地圖fig.show

3.5 使用內置iris數據

我們先看看怎麼使用px來查看內置數據的文檔:

選擇兩個屬性製圖

選擇兩個屬性作為橫縱坐標來繪製散點圖

fig = px.scatter( iris, # 數據集 x="sepal_width", # 橫坐標 y="sepal_length" # 縱坐標 )fig.show

通過color參數來顯示不同的顏色:

3.6 聯合分布圖

我們一個圖形中能夠將散點圖和直方圖組合在一起顯示:

px.scatter( iris, # 數據集 x="sepal_width", # 橫坐標 y="sepal_length", # 縱坐標 color="species", # 顏色 marginal_x="histogram", # 橫坐標直方圖 marginal_y="rug" # 細條圖)

3.7 小提琴圖

小提琴圖能夠很好的顯示數據的分布和誤差情況,一行代碼利用也能顯示小提琴圖:

px.scatter( iris, # 數據集 x="sepal_width", # 橫坐標 y="sepal_length", # 縱坐標 color="species", # 顏色 marginal_y="violin", # 縱坐標小提琴圖 marginal_x="box", # 橫坐標箱型圖 trendline="ols" # 趨勢線)

3.8 散點矩陣圖

px.scatter_matrix( iris, # 數據 dimensions=["sepal_width","sepal_length","petal_width","petal_length"], # 維度選擇 color="species") # 顏色

3.9 平行坐標圖

px.parallel_coordinates( iris, # 數據集 color="species_id", # 顏色 labels={"species_id":"Species", # 各種標籤值"sepal_width":"Sepal Width","sepal_length":"Sepal Length","petal_length":"Petal Length","petal_width":"Petal Width"}, color_continuous_scale=px.colors.diverging.Tealrose, color_continuous_midpoint=2)

3.10 箱體誤差圖

# 對當前值加上下兩個誤差值iris["e"] = iris["sepal_width"] / 100px.scatter( iris, # 繪圖數據集 x="sepal_width", # 橫坐標 y="sepal_length", # 縱坐標 color="species", # 顏色值 error_x="e", # 橫軸誤差 error_y="e" # 縱軸誤差 )

3.11 等高線圖

等高線圖反映數據的密度情況:

px.density_contour( iris, # 繪圖數據集 x="sepal_width", # 橫坐標 y="sepal_length", # 縱坐標值 color="species" # 顏色)

等高線圖和直方圖的倆和使用:

px.density_contour( iris, # 數據集 x="sepal_width", # 橫坐標值 y="sepal_length", # 縱坐標值 color="species", # 顏色 marginal_x="rug", # 橫軸為線條圖 marginal_y="histogram" # 縱軸為直方圖 )

3.12 密度熱力圖

px.density_heatmap( iris, # 數據集 x="sepal_width", # 橫坐標值 y="sepal_length", # 縱坐標值 marginal_y="rug", # 縱坐標值為線型圖 marginal_x="histogram" # 直方圖 )

3.13 並行類別圖

在接下來的圖形中我們使用的小費tips實例,首先是導入數據:

fig = px.parallel_categories( tips, # 數據集 color="size", # 顏色 color_continuous_scale=px.colors.sequential.Inferno) # 顏色變化取值fig.show

3.14 柱狀圖

fig = px.bar( tips, # 數據集 x="sex", # 橫軸 y="total_bill", # 縱軸 color="smoker", # 顏色參數取值 barmode="group", # 柱狀圖模式取值 facet_row="time", # 行取值 facet_col="day", # 列元素取值 category_orders={"day": ["Thur","Fri","Sat","Sun"], # 分類順序"time":["Lunch", "Dinner"]})fig.show

3.15 直方圖

fig = px.histogram( tips, # 繪圖數據集 x="sex", # 橫軸為性別 y="tip", # 縱軸為費用 histfunc="avg", # 直方圖顯示的函數 color="smoker", # 顏色 barmode="group", # 柱狀圖模式 facet_row="time", # 行取值 facet_col="day", # 列取值 category_orders={ # 分類順序"day":["Thur","Fri","Sat","Sun"],"time":["Lunch","Dinner"]})

fig.show

3.16 箱型圖

箱型圖也是現實數據的誤差和分布情況:

# notched=True顯示連接處的錐形部分px.box(tips, # 數據集 x="day", # 橫軸數據 y="total_bill", # 縱軸數據 color="smoker", # 顏色 notched=True) # 連接處的錐形部分顯示出來

px.box( tips, # 數據集 x="day", # 橫軸 y="total_bill", # 縱軸 color="smoker", # 顏色# notched=True # 隱藏參數 )

再來畫一次小提琴圖:

px.violin( tips, # 數據集 x="smoker", # 橫軸坐標 y="tip", # 縱軸坐標 color="sex", # 顏色參數取值 box=True, # box是顯示內部的箱體 points="all", # 同時顯示數值點 hover_data=tips.columns) # 結果中顯示全部數據

3.17 極坐標圖

在這裡我們使用的是內置的wind數據:

散點極坐標圖

線性極坐標圖

fig = px.line_polar( wind, # 數據集 r="frequency", # 半徑 theta="direction", # 角度 color="strength", # 顏色 line_close=True, # 線性閉合 color_discrete_sequence=px.colors.sequential.Plasma_r) # 顏色變化fig.show

柱狀極坐標圖

fig = px.bar_polar( wind, # 數據集 r="frequency", # 半徑 theta="direction", # 角度 color="strength", # 顏色 template="plotly_dark", # 主題 color_discrete_sequence=px.colors.sequential.Plasma_r) # 顏色變化fig.show

顏色面板

在px中有很多的顏色可以供選擇,提供了一個顏色面板:

px.colors.qualitative.swatches

px.colors.sequential.swatches

主題

px中存在3種主題:

plotlyplotly_whiteplotly_darkpx.scatter( iris, # 數據集 x="sepal_width", # 橫坐標值 y="sepal_length", # 縱坐標取值 color="species", # 顏色 marginal_x="box", # 橫坐標為箱型圖 marginal_y="histogram", # 縱坐標為直方圖 height=600, # 高度 trendline="ols", # 顯示趨勢線 template="plotly") # 主題

px.scatter( iris, # 數據集 x="sepal_width", # 橫坐標值 y="sepal_length", # 縱坐標取值 color="species", # 顏色 marginal_x="box", # 橫坐標為箱型圖 marginal_y="histogram", # 縱坐標為直方圖 height=600, # 高度 trendline="ols", # 顯示趨勢線 template="plotly_white") # 主題

px.scatter( iris, # 數據集 x="sepal_width", # 橫坐標值 y="sepal_length", # 縱坐標取值 color="species", # 顏色 marginal_x="box", # 橫坐標為箱型圖 marginal_y="histogram", # 縱坐標為直方圖 height=600, # 高度 trendline="ols", # 顯示趨勢線 template="plotly_dark") # 主題

總結

本文中利用大量的篇幅講解了如何通過plotly_express來繪製:柱狀圖、線型圖、散點圖、小提琴圖、極坐標圖等各種常見的圖形。通過觀察上面Plotly_express繪製圖形過程,我們不難發現它有三個主要的優點:

快速出圖,少量的代碼就能滿足多數的製圖要求。基本上都是幾個參數的設置我們就能快速出圖圖形漂亮,繪製出來的可視化圖形顏色亮麗,也有很多的顏色供選擇。圖形是動態可視化的。文章中圖形都是截圖,如果是在Jupyter notebook中都是動態圖形希望通過本文的講解能夠幫助堵住快速入門plotly_express可視化神器。

相關焦點

  • 使用Pandas,Seaborn和Plotly繪製漂亮的圖表
    當我從事地理空間可視化工作時遇到了Bokeh。 但是,我很快意識到,雖然Bokeh與眾不同,但它與matplotlib一樣複雜。Plotly我確實在一段時間前嘗試了plot.ly(從現在開始被稱為plotly)。 再一次,致力於地理空間數據的可視化。 那時,它似乎比前面提到的庫還要不靠譜。
  • 太陽圖、平行坐標……5種動態、交互可視化讓數據講出更動聽的故事
    而很多時候,一張漂亮的可視化圖表就足以勝過千言萬語。本文將介紹 5 種基於 Plotly 的可視化方法,你會發現,原來可視化不僅可用直方圖和箱形圖,還能做得如此動態好看甚至可交互。對數據科學家來說,講故事是一個至關重要的技能。為了表達我們的思想並且說服別人,我們需要有效的溝通。而漂漂亮亮的可視化是完成這一任務的絕佳工具。
  • 超全代碼詳解 Python 製作精美炫酷圖表教程
    Plotly 不久前我確實嘗試過 plot.ly (後面就直接用plotly來表示)同樣用於地理空間可視化。那個時候,plotly比前面提到的庫還要麻煩。它必須通過筆記本帳戶登錄,然後plotly可以在線呈現,接著下載最終圖表。我很快就放棄了。
  • 數聚易視重磅推出,助力企業級數據大屏可視化
    為滿足市場上增長快速、紛繁複雜的大屏可視化需求,數聚股份全新打造的企業級大屏可視化產品—數聚易視DataCVG E-Viz應運而生。 「易視」字面含義即「容易看」,亦有「換個角度看」和「改變看法」的意思;」易視」諧音同「議事」,也就是大屏可視化常用場景的企業經營會議討論。新產品的名字精準詮釋了自身功能特性與價值:從數位化角度為用戶提供簡單、高效、炫酷的可視化大屏,驅動管理決策。
  • 19款實用「數據可視化工具」
    >有智能圖表推薦功能,而且內置的可視化圖表很豐富,支持添加組件對省份、人口數量等進行篩選過濾,並可以將做好的地圖可視化模板掛出,無需導出成pdf格式進行匯報。而且個人版免費。魔鏡有企業版,也有免費版。企業版擁有 500 種可視化效果,免費版可選擇效果少些。支持excel,csv,txt等主流文本類型數據源,可以直接生成南丁格爾玫瑰圖。
  • 數據可視化當中的圖表組合:比例面積圖
    編輯導讀:優秀的數據可視化依賴優異的設計,並非僅僅選擇正確的圖表模板那麼簡單,數據可視化可以幫助用戶更好地理解數據、運用數據。本文作者從自身經驗出發,結合具體案例分享了比例面積圖的不同組合形式,供大家一同參考學習。
  • 可視化就這麼玩
    一是我們的可視化水平處於什麼階段?2懂原理才能真懂製作:分析還原圖表所需的圖表類型、數據排列、輔助數據、自定義元素及關鍵技巧。重點圖表提供視頻講解+簡要圖文製作步驟。但是,考慮到很多小夥伴的工作數據的私密性,學習新工具的時間成本和難度,我們的工作型圖表完全採用Excel 2016製作,建議採用Excel 2016及以上版本打開及學習,其他版本和Wps可能會有部分效果顯示不正常。使用Wps的話建議2019版本及以上。
  • 火爆抖音、B站的數據可視化動態視頻都是如何製作的?
    So,這種數據可視化動態視頻怎麼製作的呢?在好奇心的驅使下,小編調研了下市面上的各類工具,為大家選取了兩款好上手的動態視頻製作工具:datavrap、flourish。接下來DataHunter小袁zi就來教大家如何使用這兩款產品製作可視化動態視頻。
  • 技術帖 | 送你圖表可視化製作的30個小技巧
    可視化圖表已經成為律師闡述案情、贏得訴訟的好幫手,律師除了要掌握製作可視化圖表的思路,也要了解如何將「可視化」更加精美地表現出來。
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    在數據分析和可視化中最有用的 50 個 Matplotlib 圖表。 這些圖表列表允許您使用 python 的 matplotlib 和 seaborn 庫選擇要顯示的可視化對象。這些圖表根據可視化目標的7個不同情景進行分組。 例如,如果要想像兩個變量之間的關係,請查看「關聯」部分下的圖表。 或者,如果您想要顯示值如何隨時間變化,請查看「變化」部分,依此類推。
  • 一句話生成可視化圖表 百度智能雲Sugar重磅發布AI問答功能
    一、百度智能雲Sugar解放數據可視化開發人力隨著數據正式成為生產資料,大數據時代的企業經營者們越來越重視數據在企業降本增效上起到的現實作用,大屏可視化需求也正在逐步擴大:一些監控中心、指揮調度中心需要依據實時數據快速做出決策;電商平臺在大促活動時需要對外公布實時銷售數據。
  • 8個流行的Python可視化工具
    ,用哪種好看又實用的可視化工具包呢?之前文章裡出現過漂亮的圖表時,也總有讀者在後臺留言問該圖表時用什麼工具做的。下面,作者介紹了八種在 Python 中實現的可視化工具包,其中有些包還能用在其它語言中。快來試試你喜歡哪個?用 Python 創建圖形的方法有很多,但是哪種方法是最好的呢?當我們做可視化之前,要先明確一些關於圖像目標的問題:你是想初步了解數據的分布情況?想展示時給人們留下深刻印象?
  • 信息可視化:新讀圖時代下的視覺藝術
    作為視覺設計的一部分,可視化信息圖擁有傳統信息圖表難以企及的優越性。首先,在信息重點的區分方面,傳統信息圖表只能將信息進行歸納、總結,形成圖表文字,受眾只能獲取整理後的資訊,卻無法迅速從中獲得關鍵信息,多數情況下需要受眾去揣測信息的重點內容,而不可避免地導致了不同文化程度的受眾理解上的偏差。
  • 大公司都是怎麼做數據可視化規範的
    如何從中啟發來構建自己的數據可視化設計指南?企業或組織進行數據可視化時,需要用數據可視化設計指南來規範信息表示形式。通常包括是什麼(圖表的類型有哪些?)、為什麼(如為什麼使用這個顏色?)和怎麼做(如用什麼工具設計?)。如果涉及到一些設計工具,如Excel、R、D3.js或Tableau,可視化指南還會提供一個模板來演示如何應用。
  • 實況足球2019推出簡化版 12月13日發售
    今天Dsogaming報導,科那美宣布免費可玩的《實況足球2019》簡化版將於12月13日發布,感興趣的一起來了解一下吧。《實況足球2019》簡化版預告:科那美稱,《實況足球2019》簡化版將提供不受限制的myClub模式,其中包括了大量現役球員,和貝克漢姆、馬拉度納等多為世界知名傳奇球星。玩家們還可以獲得所有新的特色球員,他們的能力將會受到他們在上周末的比賽中的表現的影響。
  • 100張經典信息可視化圖表 看看你的大腦在想什麼
    本文轉自Tangent90,作者JoAnn18世紀50年代霍亂時期,John Snow繪製的一張霍亂疫情的位置圖,並通過該圖表找到了霍亂疫情源頭所在
  • 8 個流行的 Python 可視化工具包,你喜歡哪個?
    公眾號關注「傑哥的IT之旅」,來源:機器之心  作者:Aaron Frederick參與:李詩萌、王淑婷喜歡用 Python 做項目的小夥伴不免會遇到這種情況:做圖表時,用哪種好看又實用的可視化工具包呢
  • 「STEAM情報」《沙耶之歌》本月登陸Steam+《60秒》推出重製版原版玩家可免費領取
    頗具深度的黑色喜劇風格遊戲《60秒!60 Seconds》即將在7月份推出重製版本,官方聲明:此次的重製版將免費發放給,擁有遊戲原版的玩家。《60秒!》這款遊戲的故事發生在核災難前,玩家將有60秒的時間衝回家,來尋找家人和有用的物資,在這短短的60秒內,你選擇拿些什麼或是把誰留下,都將對你往後的生存起到至關重要的作用;本次的重製版將在原版的基礎上添加4K高清畫面,更新2D畫面,新增手繪3D質感,並添加新版本的交互菜單、改良UI系統和一個全新的生存模式、全新的劇情以及全新的成就和可供解鎖的視覺內容
  • 多彩圖表手冊 | (2)善用ICON配合圖表
    多彩圖表手冊 | (2)善用ICON配合圖表 2020-11-16 08:38 來源:澎湃新聞·澎湃號·湃客