溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python可視化plotly框架怎么使用

發(fā)布時間:2023-05-04 09:26:57 來源:億速云 閱讀:129 作者:iii 欄目:編程語言

這篇文章主要介紹“Python可視化plotly框架怎么使用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Python可視化plotly框架怎么使用”文章能幫助大家解決問題。

一、簡介

Plotly是一個非常著名且強大的開源數(shù)據(jù)可視化框架,它通過構建基于瀏覽器顯示的web形式的可交互圖表來展示信息,可創(chuàng)建多達數(shù)十種精美的圖表和地圖。

二、繪圖語法規(guī)則

2.1 離線繪圖方式

Plotly中繪制圖像有在線和離線兩種方式,因為在線繪圖需要注冊賬號獲取API key,較為麻煩,所以本文僅介紹離線繪圖的方式。

離線繪圖又有plotly.offline.plot()和plotly.offline.iplot()兩種方法,前者是以離線的方式在當前工作目錄下生成html格式的圖像文件,并自動打開;

后者是在jupyter notebook中專用的方法,即將生成的圖形嵌入到ipynb文件中,本文即采用后面一種方式(注意,在jupyter notebook中使用plotly.offline.iplot()時,需要在之前運行plotly.offline.init_notebook_mode()以完成繪圖代碼的初始化,否則會報錯)。

plotly.offline.iplot()的主要參數(shù)如下:

  • figure_or_data:傳入plotly.graph_objs.Figure、plotly.graph_objs.Data、字典或列表構成的,能夠描述一個graph的數(shù)據(jù)

  • show_link:bool型,用于調(diào)整輸出的圖像是否在右下角帶有plotly的標記

  • link_text:str型輸入,用于設置圖像右下角的說明文字內(nèi)容(當show_link=True時),默認為'Export to plot.ly'

  • image:str型或None,控制生成圖像的下載格式,有'png'、'jpeg'、'svg'、'webp',默認為None,即不會為生成的圖像設置下載方式

  • filename:str型,控制保存的圖像的文件名,默認為'plot'

  • image_height:int型,控制圖像高度的像素值,默認為600

  • image_width:int型,控制圖像寬度的像素值,默認為800

下面是一個簡單的示例:

import plotly
import plotly.graph_objs as go
'''初始化jupyter notebook中的繪圖模式'''
plotly.offline.init_notebook_mode()
'''繪制一個基本的折線圖,控制其尺寸為1600x600'''
plotly.offline.iplot([{'x': [1, 2, 3], 'y': [5, 2, 7]}],
 image_height=600,
 image_width=1600)

Python可視化plotly框架怎么使用

2.2 graph對象

plotly中的graph_objs是plotly下的子模塊,用于導入plotly中所有圖形對象,在導入相應的圖形對象之后,便可以根據(jù)需要呈現(xiàn)的數(shù)據(jù)和自定義的圖形規(guī)格參數(shù)來定義一個graph對象,再輸入到plotly.offline.iplot()中進行最終的呈現(xiàn).

查詢相關幫助手冊得到如下結(jié)果:

Help on package plotly.graph_objs in plotly:
NAME
 plotly.graph_objs
DESCRIPTION
 graph_objs
 ==========
 This package imports definitions for all of Plotly's graph objects. For more
 information, run help(Obj) on any of the following objects defined here.
 The reason for the package graph_objs and the module graph_objs is to provide
 a clearer API for users.
PACKAGE CONTENTS
 _area
 _bar
 _box
 _candlestick
 _carpet
 _choropleth
 _cone
 _contour
 _contourcarpet
 _deprecations
 _figure
 _figurewidget
 _frame
 _heatmap
 _heatmapgl
 _histogram
 _histogram2d
 _histogram2dcontour
 _layout
 _mesh4d
 _ohlc
 _parcoords
 _pie
 _pointcloud
 _sankey
 _scatter
 _scatter3d
 _scattercarpet
 _scattergeo
 _scattergl
 _scattermapbox
 _scatterpolar
 _scatterpolargl
 _scatterternary
 _splom
 _surface
 _table
 _violin
 area (package)
 bar (package)
 box (package)
 candlestick (package)
 carpet (package)
 choropleth (package)
 cone (package)
 contour (package)
 contourcarpet (package)
 graph_objs
 graph_objs_tools
 heatmap (package)
 heatmapgl (package)
 histogram (package)
 histogram2d (package)
 histogram2dcontour (package)
 layout (package)
 mesh4d (package)
 ohlc (package)
 parcoords (package)
 pie (package)
 pointcloud (package)
 sankey (package)
 scatter (package)
 scatter3d (package)
 scattercarpet (package)
 scattergeo (package)
 scattergl (package)
 scattermapbox (package)
 scatterpolar (package)
 scatterpolargl (package)
 scatterternary (package)
 splom (package)
 surface (package)
 table (package)
 violin (package)
DATA
 absolute_import = _Feature((2, 5, 0, 'alpha', 1), (3, 0, 0, 'alpha', 0...
FILE
 d:anacondalibsite-packagesplotlygraph_objs__init__.py

可以看出graph_objs中包含的圖形對象非常之豐富,本文也會挑選其中常用的幾種進行介紹。

2.3 構造traces

在根據(jù)繪圖需求從graph_objs中導入相應的obj之后,接下來需要做的事情是基于待展示的數(shù)據(jù),為指定的obj配置相關參數(shù),這在plotly中稱為構造traces(create traces),下面舉兩個簡單的例子來幫助理解這個部分:

首先,我們來繪制一個較為基本的散點圖:

import plotly
import plotly.graph_objs as go
import numpy as np
'''構造1000個服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構造trace,配置相關參數(shù)'''
trace = go.Scatter(
 x = random_x,
 y = random_y,
 mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''啟動繪圖'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(data, filename='basic-scatter')

Python可視化plotly框架怎么使用

從上面的簡單實例可以看出trace創(chuàng)建的大致方式,而一張圖中可以疊加多個trace,如下面的例子:

import numpy as np
import plotly
import plotly.graph_objs as go
'''創(chuàng)建仿真數(shù)據(jù)'''
N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5
'''構造trace0'''
trace0 = go.Scatter(
 x = random_x,
 y = random_y0,
 mode = 'markers',
 name = 'markers'
)
'''構造trace1'''
trace1 = go.Scatter(
 x = random_x,
 y = random_y1,
 mode = 'lines+markers',
 name = 'lines+markers'
)
'''構造trace2'''
trace2 = go.Scatter(
 x = random_x,
 y = random_y2,
 mode = 'lines',
 name = 'lines'
)
'''將所有trace保存在列表中'''
data = [trace0, trace1, trace2]
'''啟動繪圖'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(data, filename='scatter-mode')

Python可視化plotly框架怎么使用

對于不同的graph_obj,trace的配置格式也各有不同之處。

2.4 定義Layout

plotly中圖像的圖層元素與底層的背景、坐標軸等是獨立開來的,在我們通過前面介紹的內(nèi)容,定義好繪制圖像需要的對象之后,可以直接繪制,但如果想要在背景圖層上有更多自定義化的內(nèi)容,就需要定義Layout()對象,其主要參數(shù)如下,我們根據(jù)設置對象的不同分為幾個部分并分開舉例講解:

2.4.1 文字

文字是一幅圖中十分重要的組成部分,plotly其強大的繪圖機制為一幅圖中的文字進行了細致的劃分,可以非常有針對性地對某一個組件部分的字體進行個性化的設置:

全局文字:

  • font:字典型,用于控制圖像中全局字體的部分,其常用鍵及功能如下:

  • family:str型,用于控制字體,默認為'Open Sans',可選項有'verdana','arial','sans-serif'等等,具體自行移步官網(wǎng)說明文檔

  • size:int型,用于控制字體大小,默認為12

  • color:str型,傳入十六進制色彩,默認為'#444'

下面是一個簡單的例子:

import plotly
import plotly.graph_objs as go
import numpy as np
'''構造1000個服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構造trace,配置相關參數(shù)'''
trace = go.Scatter(
 x = random_x,
 y = random_y,
 mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''創(chuàng)建layout對象'''
layout = go.Layout(title='測試',
 font={
 'size':22,
 'family':'sans-serif',
 'color':'9ed900'#將全局字體顏色設置顏色為蔥綠
 })
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

Python可視化plotly框架怎么使用

標題文字:

  • title:str型,用于控制圖像的主標題

  • titlefont:字典型,用于獨立控制標題字體的部分,其常用鍵如下:

  • family:同font中的family,用于單獨控制標題字體

  • size:int型,控制標題的字體大小

  • color:同font中的color

下面是一個簡單的例子:

import plotly
import plotly.graph_objs as go
import numpy as np
'''構造1000個服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構造trace,配置相關參數(shù)'''
trace = go.Scatter(
x = random_x,
y = random_y,
mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''創(chuàng)建layout對象'''
layout = go.Layout(title='測試',
titlefont={
'size':20,
'color':'9ed900'#將標題字體顏色設置顏色為蔥綠
})
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

Python可視化plotly框架怎么使用

2.4.2 坐標軸

  • xaxis或yaxis:字典型,控制橫坐標的各屬性,其主要鍵如下:

  • color:str型,傳入十六進制色彩,控制橫坐標上所有元素的基礎顏色(在未單獨指定顏色之前,這些元素均采用此處color指定的顏色)

  • title:str型,設置橫坐標軸上的標題

  • titlefont:字典型,同之前所有同名參數(shù)

  • type:str型,用于控制橫坐標軸類型,'-'表示根據(jù)輸入數(shù)據(jù)自適應調(diào)整,'linear'表示線性坐標軸,'log'表示對數(shù)坐標軸,'date'表示日期型坐標軸,'category'表示分類型坐標軸,默認為'-'

  • autorange:bool型或'reversed',控制是否根據(jù)橫坐標對應的數(shù)據(jù)自動調(diào)整坐標軸范圍,默認為True

  • range:list型,控制橫坐標軸的區(qū)間范圍,自行設置無默認項,取決于橫坐標軸的數(shù)據(jù)類型,格式均為[左端點,右端點]

  • tickmode:str型,設置坐標軸刻度的格式,'auto'表示自動根據(jù)輸入的數(shù)據(jù)來決定,'linear'表示線性的數(shù)值型,'array'表示由自定義的數(shù)組來表示(用數(shù)組來自定義刻度標簽時必須選擇此項)

  • tickvals:list、numpy array或pandas中的series,作為坐標軸刻度標簽的替代(tickmode此時必須被設置為'array')

  • ticks:str型,控制刻度標簽的書寫位置,'outside'表示在外側(cè)顯示,'inside'表示在內(nèi)側(cè)顯示,''表示不顯示

  • ticklen:int型,設置刻度標簽的像素長度

  • tickwidth:int型,設置刻度標簽的像素寬度

  • tickcolor:str型,傳入十六進制色彩,用于控制刻度標簽的顏色

  • tickfont:字典型,同前面所有字典型字體控制參數(shù),用于對刻度標簽進行單獨控制

  • tickangle:int型,設置刻度標簽的旋轉(zhuǎn)角度

  • showline:bool型,控制是否繪制出該坐標軸上的直線部分

  • linecolor:str型,十六進制色彩,控制坐標軸線條的色彩

  • linewidth:int型,設置坐標軸直線部分的像素寬度

  • showgrid:bool型,控制是否繪制網(wǎng)格線

  • gridcolor:str型,十六進制色彩,控制網(wǎng)格線的顏色

  • gridwidth:int型,控制網(wǎng)格線的像素寬度

  • zeroline:bool型,控制是否在0值處繪制0刻度線

  • side:str型,控制x(y)軸放置于作圖區(qū)域的位置,'top'、'bottom'控制橫軸放置于頂部亦或是底部;'left'、'right'控制縱軸放置于左側(cè)亦或是右側(cè)

下面是幾個簡單的示例。

1. 對橫縱坐標軸標題字體進行修改。

import plotly
import plotly.graph_objs as go
import numpy as np
'''構造1000個服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構造trace,配置相關參數(shù)'''
trace = go.Scatter(
 x = random_x,
 y = random_y,
 mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''創(chuàng)建layout對象,對橫縱坐標軸的標題進行一定的設置'''
layout = go.Layout(xaxis={
 'title':'這是橫坐標軸',
 'titlefont':{
 'size':30
 }
},yaxis={
 'title':'這是縱坐標軸',
 'titlefont':{
 'size':40
 }
})
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

Python可視化plotly框架怎么使用

2. 對橫縱方向的坐標軸線條及網(wǎng)格進行設置

import plotly
import plotly.graph_objs as go
import numpy as np
'''構造1000個服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構造trace,配置相關參數(shù)'''
trace = go.Scatter(
 x = random_x,
 y = random_y,
 mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''創(chuàng)建layout對象,對橫縱坐標軸的線條及網(wǎng)格顏色進行一定的設置'''
layout = go.Layout(xaxis={
 'showline':False,
 'showgrid':True,
 'zeroline':False,
 'showgrid':True,
 'gridcolor':'7fecad'
 },yaxis={
'showline':False,
 'showgrid':True,
 'gridcolor':'#3d3b4f',
 'zeroline':False
})
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

Python可視化plotly框架怎么使用

2.4.3 圖例

  • showlegend:bool型,控制是否繪制圖例

  • legend:字典型,用于控制用圖例相關的所有屬性的設置,主要鍵如下:

  • bgcolor:str型,十六進制設置圖例背景顏色

  • bordercolor:設置圖例邊框的顏色

  • borderwidth:int型,設置圖例邊框的顏色

  • font:字典型,設置圖例文字部分的字體,同前面所有font設置規(guī)則

  • orientation:str型,設置圖例各元素的堆疊方向,'v'表示豎直,'h'表示水平堆疊

  • x:數(shù)值型,-2到3之間,用于設置圖例在水平方向上的位置,默認為1.02

  • xanchor:str型,用于直接設置圖例水平位置的固定位置,有'left'、'center'、'right'和'auto'幾個可選項

  • y:數(shù)值型,-2到3之間,用于設置圖例在豎直方向上的位置,默認為1

  • yanchor:str型,用于直接設置圖例豎直方向上的固定位置,有'top'、'middle'、'bottom'和'auto'幾個選項

下面是一個簡單的例子。

將圖例的位置挪動到圖像中心,即百分比上(0.5,0.5)的位置:

import numpy as np
import plotly
import plotly.graph_objs as go
'''創(chuàng)建仿真數(shù)據(jù)'''
N = 100
random_x = np.linspace(0, 1, N)
random_y0 = np.random.randn(N)+5
random_y1 = np.random.randn(N)
random_y2 = np.random.randn(N)-5
'''構造trace0'''
trace0 = go.Scatter(
 x = random_x,
 y = random_y0,
 mode = 'markers',
 name = 'markers'
)
'''構造trace1'''
trace1 = go.Scatter(
 x = random_x,
 y = random_y1,
 mode = 'lines+markers',
 name = 'lines+markers'
)
'''構造trace2'''
trace2 = go.Scatter(
 x = random_x,
 y = random_y2,
 mode = 'lines',
 name = 'lines'
)
'''將所有trace保存在列表中'''
data = [trace0, trace1, trace2]
'''構造layout對象,對圖例位置進行一定的設置'''
layout = go.Layout(legend={
 'x':0.5,
 'y':0.5
})
'''構造figure對象'''
fig = go.Figure(data=data,layout=layout)
'''啟動繪圖'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig, filename='scatter-mode')

Python可視化plotly框架怎么使用

2.4.4 其它雜項

  • width:int型,控制圖像的像素寬度,默認為700

  • height:int型,控制圖像的像素高度,默認為450

  • margin:字典型輸入,控制圖像邊界的寬度,其主要鍵如下:

  • l:int型,控制圖像距離左邊界的留白區(qū)域像素寬度,默認為80

  • r:int型,控制圖像距離右邊界的留白區(qū)域像素寬度,默認為80

  • t:int型,控制圖像距離上邊界的留白區(qū)域像素寬度,默認為100

  • b:int型,控制圖像距離下邊界的留白區(qū)域像素寬度,默認為80

  • pad:int型,控制坐標軸與圖像區(qū)域的像素距離,默認為0

  • paper_bgcolor:str型,傳入十六進制色彩,控制圖床的顏色

  • plot_bgcolor:str型,傳入十六進制色彩,控制繪圖區(qū)域的顏色

  • hidesources:bool型,控制是否在圖像的右下角標記來源link

  • hovermode:str型或False,用于設置懸停交互的方式,有'x'、'y'、'closest'和False這幾個可選項,F(xiàn)alse表示無懸停交互方式

  • hoverlabel:字典型輸入,用于控制懸停時出現(xiàn)的信息框的各屬性,主要鍵如下:

  • bgcolor:str型,傳入十六進制色彩,控制信息框的背景色

  • bordercolor:str型,傳入十六進制色彩,控制信息框邊框的顏色

  • font:字典型,控制信息框中字體的各屬性,其主要鍵如下:

  • family:同之前,控制字體

  • size:int型,控制字體大小,默認13

  • color:str型,傳入十六進制色彩,控制字體顏色

  • namelength:int型,控制對信息框中顯示的對應trace的名字的長度限制,建議設置為-1,即全部顯示,默認為15,即對于長于15的trace只顯示前15個字符

  • grid:字典型,控制一頁多圖(subplots)時的規(guī)劃多個圖的網(wǎng)格的屬性,其常用鍵如下:

  • rows:int型,控制網(wǎng)格中的行數(shù)(放置笛卡爾坐標系類型的子圖),也可以設置多于實際繪圖需求的行數(shù)以達到留白的目的

  • roworder:str型,設置子圖按行,是從下往上疊加還是從上往下疊加,對應'top to bottom'和'bottom to top',默認為'top to bottm',注意,只可以設置行的疊加順序,列方向上的疊加順序始終為從左往右

  • columns:int型,同rows,控制網(wǎng)格的列數(shù)

  • pattern:str型,用于控制一頁多圖中子圖之間坐標軸的共享情況,'coupled'表示每一列共享同一個x軸,每一行共享一個y軸,'independent'表示每個子圖xy軸獨立(這在進行量綱相差較大的子圖的繪制尤為有用)

  • xgap:float型,0.0-1.0之間,用于控制子圖之間的水平空白區(qū)域?qū)挾日家粋€子圖寬度的百分比

  • ygap:同xgap,控制豎直方向上子圖之間的寬度

  • domain:字典型,設置一頁多圖時,子圖占據(jù)的區(qū)域距離上下左右邊界的寬度情況,其主要鍵如下:

  • x:list型,格式為[x1,x2],x1控制子圖區(qū)域左端與圖床左端的距離,x2控制子圖區(qū)域右端與圖床左端的距離,x1、x2都代表百分比,在0.0-1.0之間取值

  • y:同x,控制子圖區(qū)域上下端分別與圖床上端的距離百分比

關于“Python可視化plotly框架怎么使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識,可以關注億速云行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI