深度學習視覺化工具visdom使用

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 10 月更文挑戰」的第3天,點選檢視活動詳情

1 visdom

1.1 vidsom介紹

Visdom是一個靈活的工具,用於建立組織共享實時豐富資料視覺化,支援:

  • Torch
  • Numpy

Visdom的目標是促進(遠端)資料的視覺化,重點是支援科學實驗。為你自己和你的合作者廣播繪製:影片影象文字等的視覺化。

在這裡插入圖片描述

通過程式設計或通過UI組織視覺化空間,為實時資料建立儀表板,檢查實驗結果,或除錯實驗程式碼。

在這裡插入圖片描述

2 visdom中的一些概念

Visdom有一套簡單的功能,可以組成不同的案例

2.1 視窗(Windows)

1、開啟visdom的UI視窗

python -m visom.server

用上面的開啟一個visdom服務,然後把返回的連結http://localhost:8097http://127.0.0.1:8097 在瀏覽器中開啟即可看到一個空白的visdom UI面板!

2、然後你可以在這個空白的白板上:

  • 繪圖
  • 視覺化影象
  • 視覺化文字 在這裡插入圖片描述

3、同時你可以拖放調整大小銷燬這些視窗。視窗存在於environments中並且environments的狀態通過sessions儲存。你可以下載視窗中的內容 - 包括SVG中的圖。

注意:

你可以通過瀏覽器的縮放比例來調整UI的比例

2.2 回撥(callbacks)

python Visdom支援實現視窗上的回撥。Demo以可編輯文字板的形式顯示。這些回撥函式允許Visdom物件接收並響應前端發生的事件

你可以通過向事件處理程式程式碼新增一個函式來為事件訂閱視窗,該函式用於通過呼叫viz.register_event_handler(handler, win_id)處理程式和視窗標識呼叫要訂閱的視窗標識。多個處理程式可以註冊到同一個視窗。你可以使用viz.clear_event_handlers(win_id)刪除視窗中的所有事件處理程式。當在視窗發生一個事件時,你的回撥將在包含以下內容字典上被呼叫:

-event_type:以下事件型別之一 - pane_data:該視窗的所有儲存內容包括佈局和內容。 - eid:當前的環境ID - target:呼叫事件的視窗ID

下面定義了其他引數。現在支援以下回調事件:

  • 1)Close - 關閉視窗時觸發。返回只有前述欄位的字典。
  • 2)KeyPress - 按下某個鍵時觸發。包含其他引數:
    • key-按下的鍵的字串`表示形式(應用SHIFT等狀態修飾符)
    • key_code - 按下鍵的javascript事件鍵碼(無修飾符)
  • 3)PropertyUpdate-在“屬性”窗格中更新屬性時觸發
    • propertyId- 屬性列表中的位置
    • value- 新的屬性值
  • 4)Click-當單擊影象窗格時觸發,具有一個引數:
    • image_coord- 在可能縮放/平移的影象(不是封閉的窗格)的座標框架中,使用欄位x和y表示單擊座標的字典。

2.3 環境Environments

在這裡插入圖片描述

你可以使用envs劃分你的視覺化空間。預設情況下,每個使用者將有一個env呼叫main。新的envs可以在使用者介面或以程式設計方式建立。envs的狀態是長期儲存的

你可以通過URL訪問特定的ENVhttp://localhost.com:8097/env/main。如果你的伺服器託管在網上,直接分享你的網址那樣其他人也可以看到你的視覺化

2.3.1 選擇環境(Selecting Environments)

從主頁面可以使用環境選擇器不同的環境之間切換。選擇新環境將向伺服器查詢該環境中存在的圖

在這裡插入圖片描述

2.3.2 比較環境(Comparing Environments)

主頁面上,可以使用環境選擇器比較不同的環境。在複選框中選擇多個環境將查詢伺服器在所有環境中具有相同標題的地塊,並將它們繪製到單個地塊中。將建立一個附加的比較圖例窗格,其中包含與每個所選環境對應的數字。使用對應於“x_name”的圖例更新各個plot,其中x是一個數字,對應於比較圖例窗格,而name是圖例中的原始名稱

2.3.3 清除環境(Clearing Environments)

你可以使用橡皮擦按鈕刪除環境中當前的所有內容。這將關閉該環境的繪製plot視窗,並且保留空白的為新的繪製視窗。

2.3.4 管理環境(Managing Environments)

1、按下資料夾圖示將開啟一個對話方塊,允許複製強制儲存當前環境,或刪除當前環境的所有

在這裡插入圖片描述

2、Env Files: 你的envs在伺服器初始化時載入,預設情況下為$HOME/.visdom/。自定義路徑可以作為cmd行引數傳遞。通過使用刪除按鈕或從環境中刪除相應的.json檔案來刪除Envs。

2.4 狀態(State)

1、當你建立了幾個視覺化後,狀態保持不變。伺服器自動快取你的視覺化 —— 如果你重新載入頁面視覺化就會再現在這裡插入圖片描述

  • Save:你可以使用save按鈕手動執儲存。這將序列化env的狀態(以JSON形式儲存到磁碟),包括視窗位置。你可以以env程式設計方式儲存。 這有助於更為複雜的配置有意義的視覺化,例如資料豐富的演示、模型訓練儀表板或系統實驗。這也使得它們易於共享和重用。

  • Fork:如果你輸入一個新的env名字,儲存將會建立一個新的env - 有效地分割以前的env。

2.5 過濾(Filter

1、你可以使用filter動態篩選env中的視窗 - 只要提供一個正則表示式來匹配您要顯示的視窗的標題。這可以有助於涉及env與許多視窗的使用情況,例如系統地檢查實驗結果

在這裡插入圖片描述

注意:

如果您儲存了當前檢視,則清除過濾器後檢視將被恢復。

在這裡插入圖片描述

2.6 檢視(Views)

通過簡單地拖動視窗的頂部來管理檢視是可能的,但是還存在一些額外的功能來保持檢視的組織和儲存公共檢視。檢視管理對於儲存和在多個視窗組織之間切換非常有用。

在這裡插入圖片描述

2.6.1 儲存和刪除檢視(Saving / Deleting Views)

使用資料夾圖示,將開啟一個對話方塊視窗,其中檢視可以以相同的方式分叉。 儲存檢視將保留給定環境中所有視窗的位置和大小。 在檢視將會儲存到visdom的$ Home / .Visdom / View / Layouts.json路徑中!

注意:

已儲存的檢視是靜態的(static)

2.6.2 重新包裝(Re-Packing)

使用重新包裝圖示(9個小方格的圖示),visdom將嘗試以一種最適合的方式打包你的視窗,同時保持行/列順序

注意:

由於對行/列排序ReactGridLayout的依賴,最終的佈局可能與預期略有不同。我們正在努力改進這種體驗,或者提供更多可微調控制的替代方案。

2.6.3 重新載入檢視(Reloading Views)

重新載入檢視,動態圖片(CSDN最大隻能上傳5MB,傳不上去)

使用檢視下拉列表可以選擇先前儲存的檢視,將當前環境中所有視窗的所有視窗的位置和大小恢復到最後一個檢視儲存的地方!

3 安裝visdom

visdom要求python3的環境,安裝比較簡單直接用pip安裝即可:

pip install visdom

4 visdom使用

4.1 啟動visdom的服務

1、確保你已經安裝了visdom,然後需要開啟一個visdom的服務,在命令列下輸入:

visdom

python -m visdom.server

在這裡插入圖片描述

2、然後在瀏覽器中開啟返回的連結:http://loaclhost:8097

4.2 visdom的命令列引數選項

1、可以在命令上中使用visdom -h檢視visdom命令列引數選項

```python (yolov5) [email protected]:~/shl_res$ visdom -h Checking for scripts. usage: visdom [-h] [-port port] [--hostname hostname] [-base_url base_url] [-env_path env_path] [-logging_level logger_level] [-readonly] [-enable_login] [-force_new_cookie] [-use_frontend_client_polling]

Start the visdom server.

optional arguments: -h, --help show this help message and exit -port port port to run the server on. --hostname hostname host to run the server on. -base_url base_url base url for server (default = /). -env_path env_path path to serialized session to reload. -logging_level logger_level logging level (default = INFO). Can take logging level name or int (example: 20) -readonly start in readonly mode -enable_login start the server with authentication -force_new_cookie start the server with the new cookie, available when -enable_login provided -use_frontend_client_polling Have the frontend communicate via polling rather than over websockets. (yolov5) [email protected]:~/shl_res$ ```

2、具體引數如下:

  • port:指定執行伺服器的
  • hostname:執行伺服器的主機名
  • base_url:基礎伺服器的url(default=/)
  • env_path:要重新載入的序列化會話的路徑
  • logging_level:日誌級別(預設=INFO)。接受標準文字和數字記錄值
  • readonly:以只讀模式啟動伺服器的標誌
  • enable_login:標記為伺服器設定身份驗證,需要使用者名稱和密碼才能登入
  • force_new_cookie:標誌重置伺服器使用的安全cookie,使當前登入cookie失效。需要啟用登入

當提供-enable_login flag時,伺服器要求使用者使用終端提示輸入憑據。或者,你可以設定VISDOM_USE_ENV_CREDENTIALS env變數,然後通過VISDOM_USERNAMEVISDOM_PASSWORD env變數提供你的使用者名稱密碼,而無需手動與終端互動。如果你想從bash指令碼jupiter notebook啟動visdom伺服器,此設定非常有用。

python VISDOM_USERNAME=username VISDOM_PASSWORD=password VISDOM_USE_ENV_CREDENTIALS=1 visdom -enable_login

如果沒有生成cookie檔案,或者設定了-force_new_cookie標誌,也可以使用VISDOM_COOKIE變數來提供cookie值。

4.3 python Visdom使用例子

4.3.1 在visdom中顯示文字和圖片

1、建立一個test_demo.py

```python import visdom import numpy as np

vis = visdom.Visdom() vis.text('Hello, world!') vis.image(np.ones((3, 10, 10))) ```

在這裡插入圖片描述

5 Visdom中的API使用

有關快速入門的功能visdom,請檢視example目錄,或閱讀下面的詳細資訊。

5.1 Visdom arguments(Python only)

python visdom客戶端的一些選項:

  • server:你的visdom伺服器的hostname(預設為:http:localhost
  • port:你的visdom伺服器的埠port(預設為:8097
  • base_url: the base visdom server url (default:/)
  • env:當沒有提供env時繪製到的預設環境(預設為:main
  • raise_exceptions:在失敗時引發異常而不是列印它們(預設值為True
  • log_to_filename:如果不是none,將所有繪圖和更新事件記錄到給定的檔案(追加模式),以便以後可以使用replay_log(預設:none)重放它們。
  • use_incoming_socket:啟用從web客戶端接收事件的套接字,允許使用者註冊回撥(預設為值為True
  • http_proxy_host:棄用。使用代理引數來完成代理支援。
  • http_proxy_port:棄用。使用代理引數來完成代理支援。
  • usename:如果伺服器以-enable_login啟動,用於身份驗證的使用者名稱(預設為None
  • passward:如果伺服器以-enable_login啟動,用於身份驗證的密碼(預設為None
  • proxies:字典對映協議到代理的URL(例如{http: foo.bar:3128}),用於每個請求。(預設值為None)
  • offline:標誌以離線模式執行visdom,在這種模式下,所有請求都被記錄到檔案中,而不是記錄到伺服器。需要設定log_to_filename。在離線模式下,不建立或更新繪圖的所有visdom命令都將返回true。(預設值為False)

5.2 基礎(Basics)API

Visdom提取以下基本的視覺化功能

  • vis.image:圖片
  • vis.images:圖片列表
  • vis.text:任意的HTML
  • vis.properties:屬性網格
  • vis.audio:音訊
  • vis.video:影片
  • vis.svg:SVG物件
  • vis.matplot:matplotlib圖繪製
  • vis.save:序列化狀態伺服器端

5.3 繪製(Plotting)

我們已經封裝了幾種常見的繪圖型別,以便輕鬆建立基本視覺化。這些視覺化由Plotly提供支援。

目前支援一下API:

  • vis.scatter:2D或3D散點圖
  • vis.line:線圖
  • vis.stem:stem圖
  • vis.heatmap:熱圖地塊
  • vis.bar:條形圖
  • vis.histogram:直方圖
  • vis.boxplot:盒子
  • vis.surf:表面重複
  • vis.contour:等高線圖
  • vis.quiver:顫抖的情節
  • vis.mesh:網格圖
  • vis.dual_axis_lines:雙y軸線圖

5.4 普通繪圖(Generic Plots)

請注意,伺服器API遵守Plotly約定datalayout物件,以便你可以生成自己的任意Plotly視覺化物件

```python import visdom vis = visdom.Visdom()

trace = dict(x=[1, 2, 3], y=[4, 5, 6], mode="markers+lines", type='custom', marker={'color': 'red', 'symbol': 104, 'size': "10"}, text=["one", "two", "three"], name='1st Trace') layout = dict(title="First Plot", xaxis={'title': 'x1'}, yaxis={'title': 'x2'})

vis._send({'data': [trace], 'layout': layout, 'win': 'mywin'}) ```

5.5 其他(Others)

  • vis.close: 通過ID關閉一個視窗
  • vis.delete_env:通過env_id刪除一個環境(environments)
  • vis.win_exists:通過id檢查一個視窗是否已經存在
  • vis.get_env_list:獲取伺服器上所有環境的列表
  • vis.win_hash:獲取視窗內容的md5 hash
  • vis.get_window_data:獲取視窗的當前資料
  • vis.check_connection:檢查伺服器是否連線
  • vis.replay_log:回放提供的日誌檔案中的操作

5.6 visdom繪圖API中的一些細節(Details)

下面來詳細說明一下visdom中提供的繪圖API的使用:

在這裡插入圖片描述

5.6.1 vis.image

1、vis.image

繪製一個img。它將包含影象CxHxW的張量(tensor)作為輸入

2、vis.image的引數:

  • jpgquality:JPG影象的質量(取值範圍:0-100),如果定義了,則用於儲存JPG影象檔案的大小,如果沒有定義,則儲存為PNG
  • caption:影象的說明(caption)
  • store_history:保持所有影象儲存到同一個視窗,並在底部附加一個滑塊,讓你選擇要檢視的影象。當你將新影象傳送到具有歷史記錄的影象時,必須始終提供此選項。

5.6.2 vis.images

1、vis.images

這個函式繪製一個影象列表。它取一個輸入B x C x H x W張量或者一個相同大小的list of images。它建立一個大小為(B / nrow, nrow)的影象網格

2、vis.images的引數:

  • nrow:影象的行數
  • padding:在影象周圍填充,四邊均勻填充
  • opt.jpgquality:JPG影象的質量(取值範圍:0-100),如果定義了,則用於儲存JPG影象檔案的大小,如果沒有定義,則儲存為PNG
  • caption:影象的說明(caption)

5.6.3 vis.text

1、vis.text

這個函式在一個框中列印文字。你可以使用它來嵌入任意HTML。它將文字字串作為輸入。當前不支援特定的選項。

2、vis.text

當前沒有特定的引數選項

5.6.4 vis.properties

1、vis.properties

這個函式在窗格中顯示可編輯的屬性。屬性應該是一個字典列表,例如:

python properties = [ {'type': 'text', 'name': 'Text input', 'value': 'initial'}, {'type': 'number', 'name': 'Number input', 'value': '12'}, {'type': 'button', 'name': 'Button', 'value': 'Start'}, {'type': 'checkbox', 'name': 'Checkbox', 'value': True}, {'type': 'select', 'name': 'Select', 'value': 1, 'values': ['Red', 'Green', 'Blue']}, ]

2、支援的型別

  • text:字串
  • number:十進位制的數
  • button:button labeled with "value"
  • checkbox:布林值呈現為複選框
  • select:多個值選擇框
    • value:選定值的Id(從零開始) -values:可能值的列表

3、在屬性值更新時呼叫回撥

  • event_typePropertyUpdate
  • propertyId:屬性列表中的位置
  • value:新的值

4、vis.properties的引數

當前沒有特定的引數選項

5.6.5 vis.audio

1、vis.audio

這個功能播放音訊。它將音訊檔案的檔名或包含波形的N張量(立體聲音訊使用Nx2矩陣)作為輸入。該函式不支援任何特定於繪圖的選項

2、支援以=下選項:

  • opts.sample_frequency取樣頻率(整型> 0,預設= 44100)

已知問題:Visdom使用scipy將張量輸入轉換為波檔案。一些版本的Chrome瀏覽器不能播放這些wave檔案(Firefox和Safari可以)。

5.6.6 vis.video

1、vis.video

播放影片。它將影片影片檔案的檔名或包含所有影片幀LxCxHxW大小的張量作為輸入。該函式不支援任何特定於繪圖的選項

2、支援以=下選項:

  • opts.fps:影片的幀率fps(整型>0,預設=25)

注意:

使用張量輸入需要安裝ffmpeg並工作。你播放影片的能力可能取決於你使用的瀏覽器:你的瀏覽器必須支援Theano編解碼器在OGG容器(Chrome支援這個)。

5.6.7 vis.svg

1、vis.svg

這個函式繪製一個SVG物件。它接受SVG字串svgstr或SVG檔案的名稱svgfile作為輸入。該函式不支援任何特定的選項。

5.6.8 vis.matplot

1、vis.matplot

這個函式繪製一個Matplotlib圖。該函式支援一個特定於繪圖的選項:resizable

2、注意:

  • 當設定為True時,繪圖將隨著窗格調整大小。需要安裝beautifulsoup4和lxml包才能使用該選項

  • matplot不使用與plotly plot相同的後端來呈現,而且效率較低。使用太多的matplot視窗可能會降低visdom效能。

5.6.9 vis.plotlyplot

1、vis.plotlyplot

這個函式繪製一個Plotly Figure物件。它不會顯式地接受選項,因為它假定你已經顯式地配置了圖形的佈局。

2、注意:

要使用這個函式,必須安裝plotly Python包。它通常可以通過執行pip install plotly來安裝。

2.6.10 vis.embeddings

1、vis.embeddings

該函式使用Barnes-Hut t-SNE演算法視覺化一組特徵。

2、vis.embeddings的引數

  • features:一個tensors的列表
  • labels:為features提供的張量的對應標籤列表
  • data_getter_fn:(可選)一個函式,它接受feature陣列的索引作為引數,並返回張量的彙總表示。如果設定了這個值,那麼也必須設定data_type。
  • data_type=str:可選)目前這裡唯一可接受的值是“HTML”

我們目前假設有不超過10個獨特的標籤,在未來我們希望提供一個顏色地圖Colormap在選擇其他情況下。

在UI中,你也可以在功能的子集周圍畫一個套索。這將在選定的子集上重新執行t-SNE視覺化。

2.6.11 vis.save

1、vis.save

儲存visdom伺服器上存活的envs。它需要輸入一個要儲存的env id列表。

5.7 繪圖(Plotting)

關於包裝的繪圖函式的進一步細節如下所示。

繪圖函式輸入各不相同,儘管它們中的大多數將包含資料的張量X和包含可選資料變數(如標籤或時間戳)的張量Y作為輸入。所有的繪圖功能都可以作為一個可選項win,用來繪製到一個特定的視窗;每個繪圖函式也返回win它繪製的視窗。還可以指定env 視覺化應該新增到的視窗。

5.7.1 vis.scatter

1、vis.scatter

此功能繪製2D或3D散點圖。它需要輸入一個Nx2或 一個Nx3張量X來指定N散點圖中點的位置。一個可選的N張量,Y其中包含離散的標籤,範圍介於1和K可以指定 - 標籤將反映在標記的顏色

2、vis.scatter的引數

  • opts.markersymbol:標記符號(字串型別,預設='dot'
  • opts.markersize:標記的大小(數字,預設=‘10’
  • opts.markercolor:每個標記的顏色(torch.*Tensor; default = nil)
  • opts.markerborderwidth:標記邊界的弦寬(浮點型別,預設=0.5
  • opts.legend:包含圖例名稱的表
  • opts.textlabels:每個點的文字標籤(列表:預設值=None)
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}
  • opts.traceopts:將跟蹤名稱或索引對映到圖後端接受的附加選項的字典。例如:traceopts = {'plotly': {'myTrace': {'mode': 'markers'}}}
  • opts.webgl:使用webgl進行繪圖(布林,預設= false)。 如果繪圖包含太多點,則更快。 謹慎使用,因為瀏覽器不會在單個頁面上允許多個WebGL上下文。

opt.markercolor是一個具有整數值的張量。張量的大小可以是NNx3``或KKx3`

  • 張量大小為N:每個資料點的單一強度值。0 =black,255 =red
  • 張量大小為Nx3:每個資料點的紅色,綠色和藍色強度。 0,0,0 =black,255,255,255 =white
  • 張量大小為K 和 Kx3:不是為每個資料點使用唯一的顏色,而是為特定標籤的所有點共享相同的顏色。

5.7.2 vis.line

1、vis.line

這個函式繪製一個線形圖。它將NNxM張量Y作為輸入,指定連線N個點的M條線的值。它還接受一個可選的X張量,指定相應的X軸值;X可以是一個N張量(在這種情況下,所有的直線將共享相同的X軸值)或具有與Y相同的大小。

2、vis.line的引數

  • opts.fillarea:填充線下面的區域(布林值)
  • opts.markers:顯示標記(布林;預設= false)
  • opts.markersymbol:標記符號(字串型別,預設='dot'
  • opts.makersize:標記的大小(數字,預設=‘10’
  • opts.linecolor:線的顏色(np.array,預設=None
  • opts.dash:每一行的行dash型別(np.array;預設= 'solid'),其中一個實線,虛線,虛線或虛線,大小應與所繪製的線的數量相匹配
  • opts.legend:包含圖例名稱的表
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}
  • opts.traceopts:將跟蹤名稱或索引對映到圖後端接受的附加選項的字典。例如:traceopts = {'plotly': {'myTrace': {'mode': 'markers'}}}
  • opts.webgl:使用webgl進行繪圖(布林,預設= false)。 如果繪圖包含太多點,則更快。 謹慎使用,因為瀏覽器不會在單個頁面上允許多個WebGL上下文。

5.7.3 vis.stem

1、vis.stem

這個函式繪製一個乾圖。它需要輸入一個N或NxM張量 X來指定時間序列中的N點的值M。包含時間戳的可選N或NxM張量Y也可以被指定; 如果Y是N張量,則M假定所有時間序列具有相同的時間戳。

2、vis.stem的引數

  • opts.colormap():colormap(字串型別,預設='Viridis'
  • opts.legend:包含圖例名稱的表
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.4 vis.heatmap

1、vis.heatmap

這個函式繪製一個熱圖。它需要輸入NxM張量X來指定熱圖中每個位置的值。

2、vis.heatmap的引數

  • opts.colormap():colormap(字串型別,預設='Viridis'
  • opts.xmin:裁剪最小值(數字;預設值= x:min())
  • opts.xmax:裁剪最小值(數字;預設值= x:min())
  • opts.columnnames:包含x軸標籤的表格
  • opts.rosnames:包含y軸標籤的表格
  • opts.legend:包含圖例名稱的表
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}
  • opts.nancolor:繪製nan的顏色。如果這是None, nan將被繪製為透明的。(字串;預設=None)

5.7.5 vis.bar

1、vis.bar

這個函式繪製一個規則的,堆積的或分組的條形圖。它需要輸入一個N或NxM張量X來指定每個條的高度。如果X包含M列,則對應於每行的值將被堆疊或分組(取決於如何opts.stacked設定)。除此之外X,還可以指定一個(可選的)N張量Y,其中包含相應的x軸值。

2、vis.bar的引數

  • opts.rownames:包含x軸標籤的表格
  • opts.stacked:在X中堆疊多個列
  • opts.legend:包含圖例名稱的表
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.6 vis.histogram

1、vis.histogram

該功能繪製指定資料的直方圖。它需要輸入一個N張量X來指定構建直方圖的資料。

2、vis.histogram的引數

  • opts.numbins:bins的數量 (number ,預設= 30)
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.7 vis.boxplot

1、vis.boxplot

此函式繪製指定資料的箱形圖。它需要輸入一個N或一個NxM張量X來指定N構造M箱形圖的資料值。

2、vis.boxplot的引數

  • opts.legend:包含圖例名稱的表
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.8 vis.surf

1、vis.surf

這個函式繪製一個曲面圖。它需要輸入NxM張量X 來指定曲面圖中每個位置的值。

2、vis.surf的引數

  • opts.colormap():colormap(字串型別,預設='Viridis'
  • opts.xmin:裁剪最小值(數字;預設值= x:min())
  • opts.xmax:裁剪最小值(數字;預設值= x:min())
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.9 vis.contour

1、vis.contour

這個函式繪製一個等高線圖。它需要輸入一個NxM張量X 來指定輪廓圖中每個位置的值。

2、vis.contour的引數

  • opts.colormap():colormap(字串型別,預設='Viridis'
  • opts.xmin:裁剪最小值(數字;預設值= x:min())
  • opts.xmax:裁剪最小值(數字;預設值= x:min())
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.10 vis.quiver

1、vis.quiver

該功能繪製箭疊圖,其中箭頭的方向和長度由NXM張量X和Y確定。可以提供兩個可選的NXM張力gridX和gridY,以指定箭頭的偏移; 預設情況下,箭頭將在常規網格上完成。

2、vis.quiver的引數

  • opts.normalize:最長箭頭的長度(number)
  • opts.arrowheads:顯示箭頭頭(Boolean;預設= True)
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =`layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}``:

5.7.11 vis.mesh

1、vis.mesh

這個函式從Nx2或Nx3矩陣X中定義的一組頂點以及可選的Mx2或Mx3矩陣Y中定義的多邊形繪製網格圖

2、vis.mesh的引數

  • opts.color:顏色(字串)
  • opts.opacity:多邊形的不透明度(數值介於0和1之間)
  • opts.layoutopts:圖後端為佈局接受的任何其他選項的字典。例如layoutopts =layoutopts = {'plotly': {'legend': {'x':0, 'y':0}}}

5.7.12 vis.dual_axis_lines

1、vis.dual_axis_lines

這個函式將使用帶有不同y軸的plotly建立一個直線圖。

  • X = 一個numpy array型別的陣列

  • Y1 =與X計數相同的numpy array陣列。

  • Y2 =與X計數相同的numpy array陣列。

2、vis.dual_axis_lines的引數

  • opts.height:繪製圖的高
  • opts.width:繪製圖的寬
  • opts.name_y1:Axis name for Y1 plot
  • opts.name_y2:Axis name for Y2 plot
  • opts.title:繪製圖的標題title
  • opts.color_title_y1:Color of the Y1 axis Title
  • opts.color_tick_y1:Color of the Y1 axis Ticks
  • opts.color_title_y2: Color of the Y2 axis Title
  • opts.color_tick_y2:Color of the Y2 axis Ticks
  • opts.side:需要放置Y2刻度的那一面。值為'right'或' left '。
  • opts.showlegend:顯示圖例(布林值)
  • opts.top:設定繪圖的頂部邊緣
  • opts.bottom:設定繪圖的底部邊緣
  • opts.right:設定繪圖的右邊邊緣
  • opts.left:設定繪圖的左邊邊緣

下面是一個輸出image:

在這裡插入圖片描述

5.8 自定義繪圖(Customizing plots)

1、Customizing plots

繪圖函式採用可選的選項表作為輸入,可用於更改圖形的(特定於通用或繪圖特定)屬性。 所有輸入引數都在單個表中指定; 輸入引數基於它們在輸入表中具有的鍵匹配。

以下選項是通用的,因為它們對所有視覺化相同(plot.image,plot.text,plot.video和plot.audio):

2、Customizing plots的以下引數是通用的

  • opts.title :圖示題
  • opts.width :圖寬度
  • opts.height :身高
  • opts.showlegend :顯示圖例(true或false)
  • opts.xtype :x軸的型別('linear'或'log')
  • opts.xlabel :x軸的標籤
  • opts.xtick :在x軸上顯示刻度(boolean)
  • opts.xtickmin :先在x軸上打勾(number)
  • opts.xtickmax :在x軸上的最後一個勾號(number)
  • opts.xtickvals :在x軸(蜱位置table的number多個)
  • opts.xticklabels:蜱上x軸(標籤table的string多個)
  • opts.xtickstep :x軸上的滴答聲之間的距離(number)
  • opts.ytype :y軸的型別('linear'或'log')
  • opts.ylabel :y軸的標籤
  • opts.ytick :在y軸上顯示刻度(boolean)
  • opts.ytickmin :首先在y軸上打勾(number)
  • opts.ytickmax :最後在y軸上打勾(number)
  • opts.ytickvals :在y軸的刻度位置(table的number多個)
  • opts.yticklabels:蜱上y軸標籤(table的string多個)
  • opts.ytickstep :Y軸上的刻度之間的距離(number)
  • opts.marginleft :左邊距(以畫素為單位)
  • opts.marginright :右邊距(以畫素為單位)
  • opts.margintop :頂部邊距(以畫素為單位)
  • opts.marginbottom:底部邊距(以畫素為單位)