您好,登錄后才能下訂單哦!
這篇“Python可視化plotly框架如何使用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Python可視化plotly框架如何使用”文章吧。
Plotly是一個非常著名且強大的開源數據可視化框架,它通過構建基于瀏覽器顯示的web形式的可交互圖表來展示信息,可創建多達數十種精美的圖表和地圖。
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()的主要參數如下:
figure_or_data:傳入plotly.graph_objs.Figure、plotly.graph_objs.Data、字典或列表構成的,能夠描述一個graph的數據
show_link:bool型,用于調整輸出的圖像是否在右下角帶有plotly的標記
link_text:str型輸入,用于設置圖像右下角的說明文字內容(當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)
plotly中的graph_objs是plotly下的子模塊,用于導入plotly中所有圖形對象,在導入相應的圖形對象之后,便可以根據需要呈現的數據和自定義的圖形規格參數來定義一個graph對象,再輸入到plotly.offline.iplot()中進行最終的呈現.
查詢相關幫助手冊得到如下結果:
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 _mesh5d _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) mesh5d (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中包含的圖形對象非常之豐富,本文也會挑選其中常用的幾種進行介紹。
在根據繪圖需求從graph_objs中導入相應的obj之后,接下來需要做的事情是基于待展示的數據,為指定的obj配置相關參數,這在plotly中稱為構造traces(create traces),下面舉兩個簡單的例子來幫助理解這個部分:
首先,我們來繪制一個較為基本的散點圖:
import plotly import plotly.graph_objs as go import numpy as np '''構造1000個服從二維正態分布的模擬數據''' N = 1000 random_x = np.random.randn(N) random_y = np.random.randn(N) '''構造trace,配置相關參數''' 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')
從上面的簡單實例可以看出trace創建的大致方式,而一張圖中可以疊加多個trace,如下面的例子:
import numpy as np import plotly import plotly.graph_objs as go '''創建仿真數據''' 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')
對于不同的graph_obj,trace的配置格式也各有不同之處。
plotly中圖像的圖層元素與底層的背景、坐標軸等是獨立開來的,在我們通過前面介紹的內容,定義好繪制圖像需要的對象之后,可以直接繪制,但如果想要在背景圖層上有更多自定義化的內容,就需要定義Layout()對象,其主要參數如下,我們根據設置對象的不同分為幾個部分并分開舉例講解:
2.4.1 文字
文字是一幅圖中十分重要的組成部分,plotly其強大的繪圖機制為一幅圖中的文字進行了細致的劃分,可以非常有針對性地對某一個組件部分的字體進行個性化的設置:
全局文字:
font:字典型,用于控制圖像中全局字體的部分,其常用鍵及功能如下:
family:str型,用于控制字體,默認為'Open Sans',可選項有'verdana','arial','sans-serif'等等,具體自行移步官網說明文檔
size:int型,用于控制字體大小,默認為12
color:str型,傳入十六進制色彩,默認為'#444'
下面是一個簡單的例子:
import plotly import plotly.graph_objs as go import numpy as np '''構造1000個服從二維正態分布的模擬數據''' N = 1000 random_x = np.random.randn(N) random_y = np.random.randn(N) '''構造trace,配置相關參數''' trace = go.Scatter( x = random_x, y = random_y, mode = 'markers' ) '''將trace保存于列表之中''' data = [trace] '''創建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')
標題文字:
title:str型,用于控制圖像的主標題
titlefont:字典型,用于獨立控制標題字體的部分,其常用鍵如下:
family:同font中的family,用于單獨控制標題字體
size:int型,控制標題的字體大小
color:同font中的color
下面是一個簡單的例子:
import plotly import plotly.graph_objs as go import numpy as np '''構造1000個服從二維正態分布的模擬數據''' N = 1000 random_x = np.random.randn(N) random_y = np.random.randn(N) '''構造trace,配置相關參數''' trace = go.Scatter( x = random_x, y = random_y, mode = 'markers' ) '''將trace保存于列表之中''' data = [trace] '''創建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')
2.4.2 坐標軸
xaxis或yaxis:字典型,控制橫坐標的各屬性,其主要鍵如下:
color:str型,傳入十六進制色彩,控制橫坐標上所有元素的基礎顏色(在未單獨指定顏色之前,這些元素均采用此處color指定的顏色)
title:str型,設置橫坐標軸上的標題
titlefont:字典型,同之前所有同名參數
type:str型,用于控制橫坐標軸類型,'-'表示根據輸入數據自適應調整,'linear'表示線性坐標軸,'log'表示對數坐標軸,'date'表示日期型坐標軸,'category'表示分類型坐標軸,默認為'-'
autorange:bool型或'reversed',控制是否根據橫坐標對應的數據自動調整坐標軸范圍,默認為True
range:list型,控制橫坐標軸的區間范圍,自行設置無默認項,取決于橫坐標軸的數據類型,格式均為[左端點,右端點]
tickmode:str型,設置坐標軸刻度的格式,'auto'表示自動根據輸入的數據來決定,'linear'表示線性的數值型,'array'表示由自定義的數組來表示(用數組來自定義刻度標簽時必須選擇此項)
tickvals:list、numpy array或pandas中的series,作為坐標軸刻度標簽的替代(tickmode此時必須被設置為'array')
ticks:str型,控制刻度標簽的書寫位置,'outside'表示在外側顯示,'inside'表示在內側顯示,''表示不顯示
ticklen:int型,設置刻度標簽的像素長度
tickwidth:int型,設置刻度標簽的像素寬度
tickcolor:str型,傳入十六進制色彩,用于控制刻度標簽的顏色
tickfont:字典型,同前面所有字典型字體控制參數,用于對刻度標簽進行單獨控制
tickangle:int型,設置刻度標簽的旋轉角度
showline:bool型,控制是否繪制出該坐標軸上的直線部分
linecolor:str型,十六進制色彩,控制坐標軸線條的色彩
linewidth:int型,設置坐標軸直線部分的像素寬度
showgrid:bool型,控制是否繪制網格線
gridcolor:str型,十六進制色彩,控制網格線的顏色
gridwidth:int型,控制網格線的像素寬度
zeroline:bool型,控制是否在0值處繪制0刻度線
side:str型,控制x(y)軸放置于作圖區域的位置,'top'、'bottom'控制橫軸放置于頂部亦或是底部;'left'、'right'控制縱軸放置于左側亦或是右側
下面是幾個簡單的示例。
1. 對橫縱坐標軸標題字體進行修改。
import plotly import plotly.graph_objs as go import numpy as np '''構造1000個服從二維正態分布的模擬數據''' N = 1000 random_x = np.random.randn(N) random_y = np.random.randn(N) '''構造trace,配置相關參數''' trace = go.Scatter( x = random_x, y = random_y, mode = 'markers' ) '''將trace保存于列表之中''' data = [trace] '''創建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')
2. 對橫縱方向的坐標軸線條及網格進行設置
import plotly import plotly.graph_objs as go import numpy as np '''構造1000個服從二維正態分布的模擬數據''' N = 1000 random_x = np.random.randn(N) random_y = np.random.randn(N) '''構造trace,配置相關參數''' trace = go.Scatter( x = random_x, y = random_y, mode = 'markers' ) '''將trace保存于列表之中''' data = [trace] '''創建layout對象,對橫縱坐標軸的線條及網格顏色進行一定的設置''' 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')
2.4.3 圖例
showlegend:bool型,控制是否繪制圖例
legend:字典型,用于控制用圖例相關的所有屬性的設置,主要鍵如下:
bgcolor:str型,十六進制設置圖例背景顏色
bordercolor:設置圖例邊框的顏色
borderwidth:int型,設置圖例邊框的顏色
font:字典型,設置圖例文字部分的字體,同前面所有font設置規則
orientation:str型,設置圖例各元素的堆疊方向,'v'表示豎直,'h'表示水平堆疊
x:數值型,-2到3之間,用于設置圖例在水平方向上的位置,默認為1.02
xanchor:str型,用于直接設置圖例水平位置的固定位置,有'left'、'center'、'right'和'auto'幾個可選項
y:數值型,-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 '''創建仿真數據''' 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')
2.4.4 其它雜項
width:int型,控制圖像的像素寬度,默認為700
height:int型,控制圖像的像素高度,默認為450
margin:字典型輸入,控制圖像邊界的寬度,其主要鍵如下:
l:int型,控制圖像距離左邊界的留白區域像素寬度,默認為80
r:int型,控制圖像距離右邊界的留白區域像素寬度,默認為80
t:int型,控制圖像距離上邊界的留白區域像素寬度,默認為100
b:int型,控制圖像距離下邊界的留白區域像素寬度,默認為80
pad:int型,控制坐標軸與圖像區域的像素距離,默認為0
paper_bgcolor:str型,傳入十六進制色彩,控制圖床的顏色
plot_bgcolor:str型,傳入十六進制色彩,控制繪圖區域的顏色
hidesources:bool型,控制是否在圖像的右下角標記來源link
hovermode:str型或False,用于設置懸停交互的方式,有'x'、'y'、'closest'和False這幾個可選項,False表示無懸停交互方式
hoverlabel:字典型輸入,用于控制懸停時出現的信息框的各屬性,主要鍵如下:
bgcolor:str型,傳入十六進制色彩,控制信息框的背景色
bordercolor:str型,傳入十六進制色彩,控制信息框邊框的顏色
font:字典型,控制信息框中字體的各屬性,其主要鍵如下:
family:同之前,控制字體
size:int型,控制字體大小,默認13
color:str型,傳入十六進制色彩,控制字體顏色
namelength:int型,控制對信息框中顯示的對應trace的名字的長度限制,建議設置為-1,即全部顯示,默認為15,即對于長于15的trace只顯示前15個字符
grid:字典型,控制一頁多圖(subplots)時的規劃多個圖的網格的屬性,其常用鍵如下:
rows:int型,控制網格中的行數(放置笛卡爾坐標系類型的子圖),也可以設置多于實際繪圖需求的行數以達到留白的目的
roworder:str型,設置子圖按行,是從下往上疊加還是從上往下疊加,對應'top to bottom'和'bottom to top',默認為'top to bottm',注意,只可以設置行的疊加順序,列方向上的疊加順序始終為從左往右
columns:int型,同rows,控制網格的列數
pattern:str型,用于控制一頁多圖中子圖之間坐標軸的共享情況,'coupled'表示每一列共享同一個x軸,每一行共享一個y軸,'independent'表示每個子圖xy軸獨立(這在進行量綱相差較大的子圖的繪制尤為有用)
xgap:float型,0.0-1.0之間,用于控制子圖之間的水平空白區域寬度占一個子圖寬度的百分比
ygap:同xgap,控制豎直方向上子圖之間的寬度
domain:字典型,設置一頁多圖時,子圖占據的區域距離上下左右邊界的寬度情況,其主要鍵如下:
x:list型,格式為[x1,x2],x1控制子圖區域左端與圖床左端的距離,x2控制子圖區域右端與圖床左端的距離,x1、x2都代表百分比,在0.0-1.0之間取值
y:同x,控制子圖區域上下端分別與圖床上端的距離百分比
以上就是關于“Python可視化plotly框架如何使用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。