日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python可視化|Python可視化進(jìn)階必備-plotly

一、簡介

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

創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為順慶等服務(wù)建站,順慶等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為順慶企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

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

2.1 離線繪圖方式

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

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

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

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

  •  figure_or_data:傳入plotly.graph_objs.Figure、plotly.graph_objs.Data、字典或列表構(gòu)成的,能夠描述一個(gè)graph的數(shù)據(jù)
  •  show_link:bool型,用于調(diào)整輸出的圖像是否在右下角帶有plotly的標(biāo)記
  •  link_text:str型輸入,用于設(shè)置圖像右下角的說明文字內(nèi)容(當(dāng)show_link=True時(shí)),默認(rèn)為'Export to plot.ly'
  •  image:str型或None,控制生成圖像的下載格式,有'png'、'jpeg'、'svg'、'webp',默認(rèn)為None,即不會(huì)為生成的圖像設(shè)置下載方式
  •  filename:str型,控制保存的圖像的文件名,默認(rèn)為'plot'
  •  image_height:int型,控制圖像高度的像素值,默認(rèn)為600
  •  image_width:int型,控制圖像寬度的像素值,默認(rèn)為800

下面是一個(gè)簡單的示例:

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

2.2 graph對象

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

查詢相關(guā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
_mesh3d
_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)
mesh3d (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:\anaconda\lib\site-packages\plotly\graph_objs\__init__.py

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

2.3 構(gòu)造traces

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

首先,我們來繪制一個(gè)較為基本的散點(diǎn)圖:

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

從上面的簡單實(shí)例可以看出trace創(chuàng)建的大致方式,而一張圖中可以疊加多個(gè)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
'''構(gòu)造trace0'''
trace0 = go.Scatter(
x = random_x,
y = random_y0,
mode = 'markers',
name = 'markers'
)
'''構(gòu)造trace1'''
trace1 = go.Scatter(
x = random_x,
y = random_y1,
mode = 'lines+markers',
name = 'lines+markers'
)
'''構(gòu)造trace2'''
trace2 = go.Scatter(
x = random_x,
y = random_y2,
mode = 'lines',
name = 'lines'
)
'''將所有trace保存在列表中'''
data = [trace0, trace1, trace2]
'''啟動(dòng)繪圖'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(data, filename='scatter-mode')

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

2.4 定義Layout

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

2.4.1 文字

文字是一幅圖中十分重要的組成部分,plotly其強(qiáng)大的繪圖機(jī)制為一幅圖中的文字進(jìn)行了細(xì)致的劃分,可以非常有針對性地對某一個(gè)組件部分的字體進(jìn)行個(gè)性化的設(shè)置:

全局文字:

  •  font:字典型,用于控制圖像中全局字體的部分,其常用鍵及功能如下:
  •  family:str型,用于控制字體,默認(rèn)為'Open Sans',可選項(xiàng)有'verdana','arial','sans-serif'等等,具體自行移步官網(wǎng)說明文檔
  •  size:int型,用于控制字體大小,默認(rèn)為12
  •  color:str型,傳入十六進(jìn)制色彩,默認(rèn)為'#444'

下面是一個(gè)簡單的例子:

import plotly
import plotly.graph_objs as go
import numpy as np
'''構(gòu)造1000個(gè)服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構(gòu)造trace,配置相關(guān)參數(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'#將全局字體顏色設(shè)置顏色為蔥綠
})
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動(dòng)繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

標(biāo)題文字:

  • title:str型,用于控制圖像的主標(biāo)題
  • titlefont:字典型,用于獨(dú)立控制標(biāo)題字體的部分,其常用鍵如下:
  • family:同font中的family,用于單獨(dú)控制標(biāo)題字體
  • size:int型,控制標(biāo)題的字體大小
  • color:同font中的color

下面是一個(gè)簡單的例子:

import plotly
import plotly.graph_objs as go
import numpy as np
'''構(gòu)造1000個(gè)服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構(gòu)造trace,配置相關(guān)參數(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'#將標(biāo)題字體顏色設(shè)置顏色為蔥綠
})
'''將graph部分和layout部分組合成figure對象'''
fig = go.Figure(data=data, layout=layout)
'''啟動(dòng)繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

2.4.2 坐標(biāo)軸

  •  xaxis或yaxis:字典型,控制橫坐標(biāo)的各屬性,其主要鍵如下:
  •  color:str型,傳入十六進(jìn)制色彩,控制橫坐標(biāo)上所有元素的基礎(chǔ)顏色(在未單獨(dú)指定顏色之前,這些元素均采用此處color指定的顏色)
  •  title:str型,設(shè)置橫坐標(biāo)軸上的標(biāo)題
  •  titlefont:字典型,同之前所有同名參數(shù)
  •  type:str型,用于控制橫坐標(biāo)軸類型,'-'表示根據(jù)輸入數(shù)據(jù)自適應(yīng)調(diào)整,'linear'表示線性坐標(biāo)軸,'log'表示對數(shù)坐標(biāo)軸,'date'表示日期型坐標(biāo)軸,'category'表示分類型坐標(biāo)軸,默認(rèn)為'-'
  •  autorange:bool型或'reversed',控制是否根據(jù)橫坐標(biāo)對應(yīng)的數(shù)據(jù)自動(dòng)調(diào)整坐標(biāo)軸范圍,默認(rèn)為True
  •  range:list型,控制橫坐標(biāo)軸的區(qū)間范圍,自行設(shè)置無默認(rèn)項(xiàng),取決于橫坐標(biāo)軸的數(shù)據(jù)類型,格式均為[左端點(diǎn),右端點(diǎn)]
  •  tickmode:str型,設(shè)置坐標(biāo)軸刻度的格式,'auto'表示自動(dòng)根據(jù)輸入的數(shù)據(jù)來決定,'linear'表示線性的數(shù)值型,'array'表示由自定義的數(shù)組來表示(用數(shù)組來自定義刻度標(biāo)簽時(shí)必須選擇此項(xiàng))
  •  tickvals:list、numpy array或pandas中的series,作為坐標(biāo)軸刻度標(biāo)簽的替代(tickmode此時(shí)必須被設(shè)置為'array')
  •  ticks:str型,控制刻度標(biāo)簽的書寫位置,'outside'表示在外側(cè)顯示,'inside'表示在內(nèi)側(cè)顯示,''表示不顯示
  •  ticklen:int型,設(shè)置刻度標(biāo)簽的像素長度
  •  tickwidth:int型,設(shè)置刻度標(biāo)簽的像素寬度
  •  tickcolor:str型,傳入十六進(jìn)制色彩,用于控制刻度標(biāo)簽的顏色
  •  tickfont:字典型,同前面所有字典型字體控制參數(shù),用于對刻度標(biāo)簽進(jìn)行單獨(dú)控制
  •  tickangle:int型,設(shè)置刻度標(biāo)簽的旋轉(zhuǎn)角度
  •  showline:bool型,控制是否繪制出該坐標(biāo)軸上的直線部分
  •  linecolor:str型,十六進(jìn)制色彩,控制坐標(biāo)軸線條的色彩
  •  linewidth:int型,設(shè)置坐標(biāo)軸直線部分的像素寬度
  •  showgrid:bool型,控制是否繪制網(wǎng)格線
  •  gridcolor:str型,十六進(jìn)制色彩,控制網(wǎng)格線的顏色
  •  gridwidth:int型,控制網(wǎng)格線的像素寬度
  •  zeroline:bool型,控制是否在0值處繪制0刻度線
  •  side:str型,控制x(y)軸放置于作圖區(qū)域的位置,'top'、'bottom'控制橫軸放置于頂部亦或是底部;'left'、'right'控制縱軸放置于左側(cè)亦或是右側(cè)

下面是幾個(gè)簡單的示例。

1. 對橫縱坐標(biāo)軸標(biāo)題字體進(jìn)行修改。

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

2. 對橫縱方向的坐標(biāo)軸線條及網(wǎng)格進(jìn)行設(shè)置

import plotly
import plotly.graph_objs as go
import numpy as np
'''構(gòu)造1000個(gè)服從二維正態(tài)分布的模擬數(shù)據(jù)'''
N = 1000
random_x = np.random.randn(N)
random_y = np.random.randn(N)
'''構(gòu)造trace,配置相關(guān)參數(shù)'''
trace = go.Scatter(
x = random_x,
y = random_y,
mode = 'markers'
)
'''將trace保存于列表之中'''
data = [trace]
'''創(chuàng)建layout對象,對橫縱坐標(biāo)軸的線條及網(wǎng)格顏色進(jìn)行一定的設(shè)置'''
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)
'''啟動(dòng)繪圖直接繪制figure對象'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig,filename='basic-scatter')

2.4.3 圖例

  •  showlegend:bool型,控制是否繪制圖例
  •  legend:字典型,用于控制用圖例相關(guān)的所有屬性的設(shè)置,主要鍵如下:
  •  bgcolor:str型,十六進(jìn)制設(shè)置圖例背景顏色
  •  bordercolor:設(shè)置圖例邊框的顏色
  •  borderwidth:int型,設(shè)置圖例邊框的顏色
  •  font:字典型,設(shè)置圖例文字部分的字體,同前面所有font設(shè)置規(guī)則
  •  orientation:str型,設(shè)置圖例各元素的堆疊方向,'v'表示豎直,'h'表示水平堆疊
  •  x:數(shù)值型,-2到3之間,用于設(shè)置圖例在水平方向上的位置,默認(rèn)為1.02
  •  xanchor:str型,用于直接設(shè)置圖例水平位置的固定位置,有'left'、'center'、'right'和'auto'幾個(gè)可選項(xiàng)
  •  y:數(shù)值型,-2到3之間,用于設(shè)置圖例在豎直方向上的位置,默認(rèn)為1
  •  yanchor:str型,用于直接設(shè)置圖例豎直方向上的固定位置,有'top'、'middle'、'bottom'和'auto'幾個(gè)選項(xiàng)

下面是一個(gè)簡單的例子。

將圖例的位置挪動(dòng)到圖像中心,即百分比上(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
'''構(gòu)造trace0'''
trace0 = go.Scatter(
x = random_x,
y = random_y0,
mode = 'markers',
name = 'markers'
)
'''構(gòu)造trace1'''
trace1 = go.Scatter(
x = random_x,
y = random_y1,
mode = 'lines+markers',
name = 'lines+markers'
)
'''構(gòu)造trace2'''
trace2 = go.Scatter(
x = random_x,
y = random_y2,
mode = 'lines',
name = 'lines'
)
'''將所有trace保存在列表中'''
data = [trace0, trace1, trace2]
'''構(gòu)造layout對象,對圖例位置進(jìn)行一定的設(shè)置'''
layout = go.Layout(legend={
'x':0.5,
'y':0.5
})
'''構(gòu)造figure對象'''
fig = go.Figure(data=data,layout=layout)
'''啟動(dòng)繪圖'''
plotly.offline.init_notebook_mode()
plotly.offline.iplot(fig, filename='scatter-mode')

2.4.4 其它雜項(xiàng)

  •  width:int型,控制圖像的像素寬度,默認(rèn)為700
  •  height:int型,控制圖像的像素高度,默認(rèn)為450
  •  margin:字典型輸入,控制圖像邊界的寬度,其主要鍵如下:
  •  l:int型,控制圖像距離左邊界的留白區(qū)域像素寬度,默認(rèn)為80
  •  r:int型,控制圖像距離右邊界的留白區(qū)域像素寬度,默認(rèn)為80
  •  t:int型,控制圖像距離上邊界的留白區(qū)域像素寬度,默認(rèn)為100
  •  b:int型,控制圖像距離下邊界的留白區(qū)域像素寬度,默認(rèn)為80
  •  pad:int型,控制坐標(biāo)軸與圖像區(qū)域的像素距離,默認(rèn)為0
  •  paper_bgcolor:str型,傳入十六進(jìn)制色彩,控制圖床的顏色
  •  plot_bgcolor:str型,傳入十六進(jìn)制色彩,控制繪圖區(qū)域的顏色
  •  hidesources:bool型,控制是否在圖像的右下角標(biāo)記來源link
  •  hovermode:str型或False,用于設(shè)置懸停交互的方式,有'x'、'y'、'closest'和False這幾個(gè)可選項(xiàng),F(xiàn)alse表示無懸停交互方式
  •  hoverlabel:字典型輸入,用于控制懸停時(shí)出現(xiàn)的信息框的各屬性,主要鍵如下:
  •  bgcolor:str型,傳入十六進(jìn)制色彩,控制信息框的背景色
  •  bordercolor:str型,傳入十六進(jìn)制色彩,控制信息框邊框的顏色
  •  font:字典型,控制信息框中字體的各屬性,其主要鍵如下:
  •  family:同之前,控制字體
  •  size:int型,控制字體大小,默認(rèn)13
  •  color:str型,傳入十六進(jìn)制色彩,控制字體顏色
  •  namelength:int型,控制對信息框中顯示的對應(yīng)trace的名字的長度限制,建議設(shè)置為-1,即全部顯示,默認(rèn)為15,即對于長于15的trace只顯示前15個(gè)字符
  •  grid:字典型,控制一頁多圖(subplots)時(shí)的規(guī)劃多個(gè)圖的網(wǎng)格的屬性,其常用鍵如下:
  •  rows:int型,控制網(wǎng)格中的行數(shù)(放置笛卡爾坐標(biāo)系類型的子圖),也可以設(shè)置多于實(shí)際繪圖需求的行數(shù)以達(dá)到留白的目的
  •  roworder:str型,設(shè)置子圖按行,是從下往上疊加還是從上往下疊加,對應(yīng)'top to bottom'和'bottom to top',默認(rèn)為'top to bottm',注意,只可以設(shè)置行的疊加順序,列方向上的疊加順序始終為從左往右
  •  columns:int型,同rows,控制網(wǎng)格的列數(shù)
  •  pattern:str型,用于控制一頁多圖中子圖之間坐標(biāo)軸的共享情況,'coupled'表示每一列共享同一個(gè)x軸,每一行共享一個(gè)y軸,'independent'表示每個(gè)子圖xy軸獨(dú)立(這在進(jìn)行量綱相差較大的子圖的繪制尤為有用)
  •  xgap:float型,0.0-1.0之間,用于控制子圖之間的水平空白區(qū)域?qū)挾日家粋€(gè)子圖寬度的百分比
  •  ygap:同xgap,控制豎直方向上子圖之間的寬度
  •  domain:字典型,設(shè)置一頁多圖時(shí),子圖占據(jù)的區(qū)域距離上下左右邊界的寬度情況,其主要鍵如下:
  •  x:list型,格式為[x1,x2],x1控制子圖區(qū)域左端與圖床左端的距離,x2控制子圖區(qū)域右端與圖床左端的距離,x1、x2都代表百分比,在0.0-1.0之間取值
  •  y:同x,控制子圖區(qū)域上下端分別與圖床上端的距離百分比

總結(jié)

以上就是plotly的繪圖基礎(chǔ)部分,如有筆誤,望指出。


網(wǎng)站名稱:Python可視化|Python可視化進(jìn)階必備-plotly
網(wǎng)頁網(wǎng)址:http://www.dlmjj.cn/article/dppheos.html