可視化神器Plotly_Express詳解

參考資料:Plotly_express官方API教程Plotly_express官方畫圖教程

一、概述

Plotly 是新一代的數(shù)據(jù)可視化神器,TopQ量化開源團隊,雖然plotly功能強大,卻一直沒有得到廣泛應(yīng)用,大部分py開發(fā)人員,還在使用陳舊的matplotlib,其中最重要的原因,就是plotly的設(shè)置過于繁瑣。為此,plotly推出了其簡化接口:Plotly Express,簡稱:px。

Plotly Express是對 Plotly.py 的高級封裝,采用ROR等新一代“約定優(yōu)先”編程模式,內(nèi)置了大量實用、現(xiàn)代的繪圖模板,用戶只需調(diào)用簡單的API函數(shù),即可快速生成漂亮的互動圖表。

Plotly Express內(nèi)置的圖表組合,涵蓋了90%常用的繪圖需要,Python畫圖,首推Plotly Express,毫無疑問。

二、圖表說明

  1. scatter:散點圖
    在散點圖中,每行data_frame由2D空間中的符號標記表示;

  2. scatter_3d:三維散點圖
    在3D散點圖中,每行data_frame由3D空間中的符號標記表示;

  3. scatter_polar:極坐標散點圖
    在極坐標散點圖中,每行data_frame由極坐標中的符號標記表示;

  4. scatter_ternary:三元散點圖
    在三元散點圖中,每行data_frame由三元坐標中的符號標記表示;

  5. scatter_mapbox:地圖散點圖
    在Mapbox散點圖中,每一行data_frame都由Mapbox地圖上的符號標記表示;

  6. scatter_geo:地理坐標散點圖
    在地理散點圖中,每一行data_frame都由地圖上的符號標記表示;

  7. scatter_matrix:矩陣散點圖
    在散點圖矩陣(或SPLOM)中,每行data_frame由多個符號標記表示,在2D散點圖的網(wǎng)格的每個單元格中有一個,其將每對dimensions彼此相對繪制;

  8. density_contour:密度等值線圖(雙變量分布)
    在密度等值線圖中,行data_frame被組合在一起,成為輪廓標記,以可視化該值的聚合函數(shù)histfunc(例如:計數(shù)或總和)的2D分布z;

  9. density_heatmap:密度熱力圖(雙變量分布)
    在密度熱圖中,行data_frame被組合在一起,成為彩色矩形瓦片,以可視化該值的聚合函數(shù)histfunc(例如:計數(shù)或總和)的2D分布 z;

  10. line:線條圖
    在2D線圖中,每行data_frame表示為2D空間中折線標記的頂點;

  11. line_polar:極坐標線條圖
    在極線圖中,每行data_frame表示為極坐標中折線標記的頂點;

  12. line_ternary:三元線條圖
    在三元線圖中,每行data_frame表示為三元坐標中折線標記的頂點;

  13. line_mapbox:地圖線條圖
    在Mapbox線圖中,每一行data_frame表示為Mapbox地圖上折線標記的頂點;

  14. line_geo:地理坐標線條圖
    在地理線圖中,每一行data_frame表示為地圖上折線標記的頂點;

  15. parallel_coordinates:平行坐標圖
    在平行坐標圖中,每行data_frame由折線標記表示,該折線標記穿過一組平行軸,每個平行軸對應(yīng)一個平行軸 dimensions;

  16. parallel_categories:并行類別圖
    在并行類別(或平行集)圖中,每行data_frame與其他共享相同值的行組合,dimensions然后通過一組平行軸繪制為折線標記,每個平行軸對應(yīng)一個dimensions;

  17. area:堆積區(qū)域圖
    在堆積區(qū)域圖中,每行data_frame表示為2D空間中折線標記的頂點。連續(xù)折線之間的區(qū)域被填充;

  18. bar:條形圖
    在條形圖中,每行data_frame表示為矩形標記;

  19. bar_polar:極坐標條形圖
    在極坐標條形圖中,每一行都data_frame表示為極坐標中的楔形標記;

  20. violin:小提琴圖
    在小提琴圖中,將data_frame每一行分組成一個曲線標記,以便可視化它們的分布;

  21. box:箱形圖
    在箱形圖中,data_frame的每一行被組合在一起成為盒須標記,以顯示它們的分布;

  22. strip:長條圖
    在長條圖中,每一行data_frame表示為類別中的抖動標記;

  23. histogram:直方圖
    在直方圖中,每一行data_frame被組合在一起成為矩形標記,以可視化該值的聚合函數(shù)histfunc(例如,計數(shù)或總和)的1D分布y(或者x,如果orientation是'h'時);

  24. choropleth:等高(值)區(qū)域地圖
    在等值區(qū)域圖中,每行data_frame由地圖上的彩色區(qū)域標記表示;


三、子模塊

import numpy as np
import pandas as pd
import plotly_express as px

1. 內(nèi)置數(shù)據(jù)集

  • 不同國家歷年GDP收入與人均壽命。包含字段:國家、洲、年份、平均壽命、人口數(shù)量、GDP、國家簡稱、國家編號;
gapminder = px.data.gapminder() 
  • 餐館的訂單流水。包含字段:總賬單、小費、性別、是否抽煙、星期幾、就餐時間、人數(shù);
tips = px.data.tips()  
  • 花:萼片長、萼片寬、花瓣長、花瓣寬、種類、種類編號
iris = px.data.iris()  
  • 風(fēng)力等級:方向、強度、數(shù)值
wind = px.data.wind()        
  • 2013年蒙特利爾市長選舉投票結(jié)果。包括字段:區(qū)域、Coderre票數(shù)、Bergeron票數(shù)、Joly票數(shù)、總票數(shù)、勝者、結(jié)果(占比分類)
election = px.data.election() 
  • 蒙特利爾一個區(qū)域中心附近的汽車共享服務(wù)的可用性。包括字段:緯度、經(jīng)度、汽車小時數(shù)、高峰小時
carshare = px.data.carshare()

2. 內(nèi)置顏色面板

  • 開源包:卡通片的色彩和序列
px.colors.carto
  • 開源包:CMOcean項目的色階
px.colors.cmocean
  • 開源包:來自ColorBrewer2項目的色階和序列
px.colors.colorbrewer
  • 周期性色標適用于具有自然周期結(jié)構(gòu)的連續(xù)數(shù)據(jù)
px.colors.cyclical 
  • 分散色標適用于具有自然中點的連續(xù)數(shù)據(jù)
px.colors.diverging     
  • 定性色標適用于沒有自然順序的數(shù)據(jù)
px.colors.qualitative
  • 順序色標適用于大多數(shù)連續(xù)數(shù)據(jù)
px.colors.sequential        
  • 舉例展示
px.colors.qualitative.swatches() 
  • 舉例效果

四、 散點圖

1. 方法定義
def scatter(data_frame, x=None, y=None, color=None, symbol=None, size=None, 
            hover_name=None, hover_data=None, text=None, facet_row=None, 
            facet_col=None, error_x=None, error_x_minus=None, error_y=None, 
            error_y_minus=None, animation_frame=None, animation_group=None, 
            category_orders={}, labels={}, color_discrete_sequence=None, 
            color_discrete_map={}, color_continuous_scale=None, 
            range_color=None, color_continuous_midpoint=None, 
            symbol_sequence=None, symbol_map={}, opacity=None,
            size_max=None, marginal_x=None, marginal_y=None, trendline=None,
            trendline_color_override=None, log_x=False, log_y=False,
            range_x=None, range_y=None, render_mode='auto', title=None, 
            template=None, width=None, height=None):

    return
2. 參數(shù)說明
  • data_frame:目標數(shù)據(jù),類型為dataframe;

  • x :指定列名。列中的值用于笛卡爾坐標中沿 X 軸的定位標記。圖表類型為水平柱狀圖時,這些值用作參數(shù)histfunc的入?yún)ⅲ?/p>

  • y :指定列名。列中的值用于笛卡爾坐標中沿 Y 軸的定位標記。圖表類型為垂直柱狀圖時,這些值用作參數(shù)histfunc的入?yún)ⅲ?/p>

  • color:指定列名。為列中的不同值,(由px)自動匹配不同的標記顏色;若列為數(shù)值數(shù)據(jù)時,還會自動生成連續(xù)色標;

  • symbol:指定列名。為列中的不同值,設(shè)置不同的標記形狀;

  • size:指定列名。為列中的不同值,設(shè)置不同的標記大小;

  • hover_name:指定列名。將列中的值,加粗顯示在懸停提示內(nèi)容的正上方;

  • hover_data:指定列名組成的列表。所有列的值,顯示在懸停提示內(nèi)容中,位于x/y值的下方。指定的列與x/y重復(fù)時僅顯示1條數(shù)據(jù);

  • text:指定列名。列中的值,在圖的標記中顯示為文本標簽,同時也顯示在懸停提示內(nèi)容中;

  • facet_row:指定列名。根據(jù)列中不同的(N個)值,在垂直方向上顯示N個子圖,并在子圖右側(cè),垂直方向上,進行文本標注;

  • facet_col:指定列名。根據(jù)列中不同的(N個)值,在水平方向上顯示N個子圖,并在子圖上方,水平方向上,進行文本標注;

  • error_x:指定列名。顯示誤差線,列中的值用于調(diào)整 X 軸誤差線的大小。如果參數(shù)error_x_minus == None,則懸停提示內(nèi)容中,顯示對稱的誤差值;否則顯示正向的誤差值。該列通常是基于元數(shù)據(jù)加工的結(jié)果,目的是統(tǒng)計元數(shù)據(jù)指標的誤差值,一般會用元數(shù)據(jù)除以100的整數(shù)倍。

  • error_x_minus:指定列名。列中的值用于在負方向調(diào)整 X 軸誤差線的大小,如果參數(shù)error_x==None,則直接忽略該參數(shù);

  • error_y:指定列名。顯示誤差線,列中的值用于調(diào)整 Y 軸誤差線的大小。如果參數(shù)error_y_minus == None,則懸停提示內(nèi)容中,顯示對稱的誤差值;否則顯示正向的誤差值。該列通常是基于元數(shù)據(jù)加工的結(jié)果,目的是統(tǒng)計元數(shù)據(jù)指標的誤差值,一般會用元數(shù)據(jù)除以100的整數(shù)倍。

  • error_y_minus:指定列名。列中的值用于在負方向調(diào)整 Y 軸誤差線的大小,如果參數(shù)error_y==None,則直接忽略該參數(shù);

  • animation_frame:指定列名。列中的值用于為動畫幀指定標記,即設(shè)置滑動條;

  • animation_group:指定列名。列中的值用于提供跨動畫幀的聯(lián)動匹配;

  • category_orders:帶有字符串鍵和字符串列表值的字典,默認為{},此參數(shù)用于強制每列的特定值排序,dict鍵是列名,dict值是指定的排列順序的字符串列表。默認情況下,在Python 3.6+中,軸,圖例和構(gòu)面中的分類值的順序取決于在data_frame中首次出現(xiàn)的順序,而在3.6以下的Python中,默認不保證順序,該參數(shù)即為解決此類問題而設(shè)計;

  • labels:帶字符串鍵和字符串值的dict,默認為{}。此參數(shù)用于修改圖表中顯示的列名稱。默認情況下,圖表中使用列名稱作為軸標題、圖例條目、懸停提示等,此參數(shù)可以進行修改,dict的鍵是列名,dict值是修改的新名稱;

  • color_discrete_sequence:有效的CSS顏色字符串列表,取自plotly_express的color子模塊。當參數(shù)color指定的列不是數(shù)值數(shù)據(jù)時,該參數(shù)為color列指定顏色序列,若category_orders參數(shù)不為None,則按category_orders中設(shè)定的順序循環(huán)執(zhí)行color_discrete_sequence,除非color列的值在參數(shù)color_discrete_map入?yún)⒌膁ict鍵中;

  • color_discrete_map:帶字符串鍵和有效CSS顏色字符串值的dict,默認為{}。當參數(shù)color指定的列不是數(shù)值數(shù)據(jù)時,該參數(shù)用于將特定顏色分配給,與特定值對應(yīng)的標記,color_discrete_map中的鍵為color表示的列值。其優(yōu)先級高,會覆蓋color_discrete_sequence參數(shù)中的設(shè)置;

  • color_continuous_scale:有效的CSS顏色字符串列表,取自plotly_express的color子模塊。當參數(shù)color指定的列是數(shù)值數(shù)據(jù)時,為連續(xù)色標,設(shè)置指定的顏色序列。實際上,color指定列時,px會自動匹配顏色:1)若指定列是數(shù)值數(shù)據(jù),通過參數(shù)color_continuous_scale可以設(shè)定具體的顏色序列;2)若指定列是非數(shù)值數(shù)據(jù)時,通過參數(shù)color_discrete_sequence可以設(shè)定具體的顏色序列(循環(huán)匹配);通過參數(shù)color_discrete_map可以為列中不同值,指定具體的顏色;

  • range_color:2個數(shù)字元素組成的列表,參數(shù)用于設(shè)定連續(xù)色標上的自動縮放,即邊界的大小值;

  • color_continuous_midpoint:數(shù)字,默認為無。如果設(shè)置,則計算連續(xù)色標的邊界以具有所需的中點。 若使用plotly_express.colors.diverging色標作為color_continuous_scale的如參時,建議設(shè)置此值;

  • symbol_sequence:定義plotly.js符號的字符串列表。參數(shù)用于為列中的值分配符號,除非symbol的值是symbol_map中的鍵。分配符號的順序:按按category_orders中設(shè)置的順序循環(huán)執(zhí)行;

  • symbol_map:帶字符串鍵和定義plotly.js符號的字符串值的dict,默認值{}。該參數(shù)用于將特定符號分配給,與特定值對應(yīng)的標記,symbol_map中的鍵為symbol表示的列值。其優(yōu)先級高,會覆蓋symbol_sequence參數(shù)中的設(shè)置;

  • opacity:數(shù)字,介于0和1之間,設(shè)置標記的不透明度;

  • size_max:整數(shù),默認為20。使用size參數(shù)時,設(shè)置最大標記的大小;

  • marginal_x:字符串,取值:rug(細條)、box(箱圖)、violin(小提琴圖)、histogram(直方圖)。該參數(shù)用于在主圖上方,繪制一個水平子圖,以便對x分布,進行可視化;

  • marginal_y:字符串,取值:rug(細條)、box(箱圖)、violin(小提琴圖)、histogram(直方圖)。該參數(shù)用于在主圖右側(cè),繪制一個垂直子圖,以便對y分布,進行可視化;

  • trendline:字符串,取值:ols、lowess、None。取值為ols時,將為每個離散顏色/符號組,繪制一個普通最小二乘回歸線;取值為lowess時,則將為每個離散顏色/符號組,繪制局部加權(quán)散點圖平滑線;

  • trendline_color_override:字符串,有效的CSS顏色。如果設(shè)置了參數(shù)trendline趨勢線,則將以此顏色繪制所有趨勢線;

  • log_x:布爾值,默認為False。如果為True,則 X 軸在笛卡爾坐標系中進行對數(shù)縮放;

  • log_y:布爾值,默認為False。如果為True,則 Y 軸在笛卡爾坐標系中進行對數(shù)縮放;

  • range_x:2個數(shù)字元素組成的列表,用于設(shè)定笛卡爾坐標中 X 軸上的自動縮放,即邊界的大小值;

  • range_y:2個數(shù)字元素組成的列表,用于設(shè)定笛卡爾坐標中 Y 軸上的自動縮放,即邊界的大小值;

  • render_mode:字符串,取值:auto(默認)、svg、webgl。用于控制繪制標記的瀏覽器API,svg適用于少于1000的數(shù)據(jù),并允許完全矢量化輸出;webgl可以接收1000點以上的數(shù)據(jù);auto使用啟發(fā)式方法來選擇模式;

  • title:字符串,設(shè)置圖表的標題;

  • template:字符串或Plotly.py模板對象,設(shè)置圖表的背景顏色。有三個內(nèi)置的 Plotly 主題: plotly, plotly_white 和 plotly_dark;

  • width:整數(shù),默認無,設(shè)置圖表的寬度(以像素為單位);

  • height:整數(shù),默認600,設(shè)置圖表的高度(以像素為單位);

3. 說明
  • 實際上,其它的圖表,其方法中的絕大多數(shù)參數(shù)和散點圖的參數(shù),用法基本相同,本文不再詳細解釋其它圖表的定義和方法,具體可以參見官方API文檔,下文會展示部分圖表的制作;

五、 圖表制作

1. 散點圖和折線圖

  • 簡單散點圖
px.scatter(iris, x="sepal_width", y="sepal_length")
  • 散點圖,為不同種類的花自動配置顏色
px.scatter(iris, x="sepal_width", y="sepal_length", color="species")
  • 散點圖,分別在圖表的上方、右側(cè)增加直方圖、細條圖
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", 
           marginal_y="rug", marginal_x="histogram")
  • 散點圖,分別在圖表的上方、右側(cè)增加箱形圖、小提琴圖,并添加趨勢線
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", 
           marginal_y="violin", marginal_x="box", trendline="ols")
  • 散點圖,為標記添加x、y軸方向上的誤差線
iris["e"] = iris["sepal_width"]/100   --設(shè)置誤差值、刪除誤差值:del iris["e"] 
px.scatter(iris, x="sepal_width", y="sepal_length", color="species", 
           error_x="e", error_y="e")
  • 散點圖,在垂直(y)、水平(x)方向上,按指定的列,單獨展示子圖表,并為列值進行排序
px.scatter(tips, x="total_bill", y="tip", facet_row="time", facet_col="day", 
           color="smoker", trendline="ols",category_orders={"day": ["Thur", 
           "Fri", "Sat", "Sun"], "time": ["Lunch", "Dinner"]})
  • 散點圖,顏色列為數(shù)值數(shù)據(jù)時,會自動展示色標
px.scatter(tips, x="total_bill", y="tip", color="size", facet_col="sex",
           color_continuous_scale=px.colors.sequential.Viridis, 
           render_mode="webgl")
  • 散點圖,設(shè)置標記大小依賴的列,對 x 軸進行縮放處理
px.scatter(gapminder.query("year==2007"), x="gdpPercap", y="lifeExp", 
           size="pop", color="continent",hover_name="country", log_x=True, 
           size_max=60)
  • 散點圖,增加滑動條,設(shè)置坐標軸取值范圍
px.scatter(gapminder, x="gdpPercap", y="lifeExp", animation_frame="year", 
           animation_group="country", size="pop", color="continent", 
           hover_name="country", facet_col="continent",log_x=True, 
           size_max=45, range_x=[100,100000], range_y=[25,90])
  • 矩陣散點圖,查看指標相關(guān)性
px.scatter_matrix(iris)
  • 矩陣散點圖,指定部分列進行展示。散點圖矩陣(SPLOM)是允許可視化多個鏈接的散點圖,方便查看數(shù)據(jù)集中的每個變量與其他變量的關(guān)系。 數(shù)據(jù)集中的每一行都顯示為每個圖中的一個點,可以進行縮放、平移或選擇操作,所有圖都是鏈接在一起的
px.scatter_matrix(iris, dimensions=["sepal_width", "sepal_length", 
                  "petal_width", "petal_length"], color="species")
  • 平行坐標圖,多維數(shù)據(jù)連線,允許同時顯示3個以上的連續(xù)變量。 dataframe 中的每一行都是一行,可以拖動尺寸,以重新排序它們,并選擇值范圍之間的交叉點。
px.parallel_coordinates(iris, color="species_id", labels={"species_id": 
            "Species", "sepal_width": "Sepal Width", "sepal_length": 
            "Sepal Length",  "petal_width": "Petal Width", "petal_length": 
            "Petal Length"},color_continuous_scale=px.colors.diverging.
            Tealrose, color_continuous_midpoint=2)
  • 并行類別圖,是并行坐標的分類模擬:使用它們可視化數(shù)據(jù)集中多組類別之間的關(guān)系
px.parallel_categories(tips, color="size", color_continuous_scale=px.
            colors.sequential.Inferno)
  • 線條圖,設(shè)置線條類型
px.line(gapminder, x="year", y="lifeExp", color="continent", 
        line_group="country", hover_name="country",
        line_shape="spline", render_mode="svg")
  • 堆積區(qū)域圖
px.area(gapminder, x="year", y="pop", color="continent", 
        line_group="country")

2. 可視化分布

  • 密度等值線圖
px.density_contour(iris, x="sepal_width", y="sepal_length")
  • 密度等值線圖,分別在圖表的上方、右側(cè)增加細條圖、直方圖
px.density_contour(iris, x="sepal_width", y="sepal_length", color="species", 
                   marginal_x="rug", marginal_y="histogram")
  • 密度熱力圖
px.density_heatmap(iris, x="sepal_width", y="sepal_length", 
                   marginal_x="rug", marginal_y="histogram")
  • 條形圖,設(shè)置堆積類型
px.bar(tips, x="sex", y="total_bill", color="smoker", barmode="group")
  • 條形圖,在垂直(y)、水平(x)方向上,按指定的列,單獨展示子圖表,并為列值進行排序
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"]})
  • 直方圖,在圖表的上方增加細條圖
px.histogram(tips, x="total_bill", y="tip", color="sex", marginal="rug", 
             hover_data=tips.columns)
  • 直方圖,在垂直(y)、水平(x)方向上,按指定的列,單獨展示子圖表,并為列值進行排序
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"]})
  • 長條圖,設(shè)置方向為水平
px.strip(tips, x="total_bill", y="time", orientation="h", color="smoker")
  • 箱形圖,設(shè)置使用槽口繪制框
px.box(tips, x="day", y="total_bill", color="smoker", notched=True)
  • 小提琴圖,同時在內(nèi)部顯示箱圖,展示所有采樣數(shù)據(jù)
px.violin(tips, y="tip", x="smoker", color="sex", box=True, points="all", 
          hover_data=tips.columns)

3. 三元坐標

  • 三元散點圖,為不同的列,指定具體的顏色
px.scatter_ternary(election, a="Joly", b="Coderre", c="Bergeron", color="winner", size="total", hover_name="district",
                   size_max=15, color_discrete_map = {"Joly": "blue", 
                   "Bergeron": "green", "Coderre":"red"} )
  • 三元線條圖,設(shè)置短劃線模式
px.line_ternary(election, a="Joly", b="Coderre", c="Bergeron", color="winner", 
                line_dash="winner")

4. 3D坐標

  • 三維散點圖,設(shè)置不同的標記形狀,并指定具體顏色
px.scatter_3d(election, x="Joly", y="Coderre", z="Bergeron", color="winner", 
              size="total", hover_name="district",symbol="result", 
              color_discrete_map = {"Joly": "blue", "Bergeron": "green", 
              "Coderre":"red"})

5. 極坐標

  • 極坐標散點圖,指定顏色序列,沿極坐標中的角度軸定位標記
px.scatter_polar(wind, r="value", theta="direction", color="strength", 
            symbol="strength",color_discrete_sequence=px.colors.sequential.
            Plotly[-2::-1])
  • 極坐標線條圖
px.line_polar(wind, r="value", theta="direction", color="strength", 
            line_close=True,color_discrete_sequence=px.colors.sequential.Plotly[-2::-1])
  • 極坐標條形圖,設(shè)置圖表背景顏色
px.bar_polar(wind, r="value", theta="direction", color="strength", template="plotly_dark",
            color_discrete_sequence= px.colors.sequential.Plotly[-2::-1])

6. 地圖

  • 地理坐標散點圖,設(shè)定滑動條,設(shè)定展示的地圖類型:自然地圖,即平面圖
px.scatter_geo(gapminder, locations="iso_alpha", color="continent", hover_name="country", size="pop",
               animation_frame="year", projection="natural earth")
  • 地理坐標線條圖,設(shè)定展示的地圖類型:正交地圖,即立體地圖
px.line_geo(gapminder.query("year==2007"), locations="iso_alpha", 
            color="continent", projection="orthographic")
  • 等高(值)區(qū)域地圖,設(shè)定滑動條,指定具體顏色序列范圍
px.choropleth(gapminder, locations="iso_alpha", color="lifeExp", 
             hover_name="country", animation_frame="year",color_continuous_scale=px.colors.sequential.Plasma, range_color=[20,80])

六、 Plotly生態(tài)

  1. Plotly.py 已經(jīng)發(fā)展成為一個非常強大的可視化交互工具,它可以讓你控制圖形的幾乎每個方面,從圖例的位置到刻度的長度。推出 Plotly Express 的主要目標是使 Plotly.py 更容易用于探索和快速迭代;

  2. 對于Plotly 生態(tài)系統(tǒng),一旦使用 Plotly Express 創(chuàng)建了一個圖形,就可以使用Themes,使用 FigureWidgets 進行命令性編輯,使用 Orca 將其導(dǎo)出為幾乎任何文件格式,或者在 GUI JupyterLab 圖表編輯器中編輯它;

  3. 主題(Themes)允許控制圖形范圍的設(shè)置,如邊距、字體、背景顏色、刻度定位等,也可以使用模板參數(shù),應(yīng)用任何命名的主題或主題對象;

  4. Plotly_express 的輸出,繼承自 Plotly.py 的 Figure 類 ExpressFigure 的對象,這意味著可以使用任何 Figure 的訪問器和方法,來改變 px 生成的圖表,通常借助于 .update() 函數(shù)來調(diào)用;

  5. demo:對Plotly_express生成的圖表,設(shè)置標記類型、坐標軸標簽名稱、坐標軸刻度傾斜角度、顯示坐標軸線、坐標軸刻度間隔等;

  • 修改前--代碼
# 選取2個國家:中國、阿富汗
country_list = ["China", "Afghanistan"]    
tem_gapminder = gapminder.query("country == @country_list")

fig = px.line(tem_gapminder, x="year", y="lifeExp", color="country", 
              width=1000, height=400, title="國家人均壽命", template="", 
              line_shape="spline", line_dash="country")
  • 修改前--圖表
  • 修改后--代碼
# 選取2個國家:中國、阿富汗
country_list = ["China", "Afghanistan"]    
tem_gapminder = gapminder.query("country == @country_list")

fig = px.line(tem_gapminder, x="year", y="lifeExp", color="country", 
              width=1000, height=400, title="國家人均壽命", template="", 
              line_shape="spline", line_dash="country")

# 修改時添加的代碼
fig.update_traces(dict(mode="markers+lines"))
fig.update(layout=dict(xaxis=dict(title="年份", tickangle=-30, 
                       showline=True, nticks=20),
                       yaxis=dict(title="人均壽命", showline=True)))
  • 修改后--圖表



Plotly Express 作為一個新的 Python 可視化庫,在 Plotly 生態(tài)系統(tǒng)下,將會迅速發(fā)展,所以不要猶豫,立即開始使用 Plotly Express 吧!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容