Visdom 介绍 | 二

摘要:
概述概念设置使用API注意事项贡献API要快速了解可视化的特性,请参阅示例目录,或阅读以下详细信息。离线:标记为在离线模式下运行visdom。在此模式下,所有请求都记录到文件中,而不是服务器中。在脱机模式下,所有不创建或更新图形的visdom命令都将返回True。当前不支持特定选项。视觉。audio此功能播放音频。

用于创建,组织和共享实时丰富数据可视化的灵活工具。支持Python。

  • 概述
  • 概念
  • 设置
  • 用法
  • API
  • 注意事项
  • 贡献

API

要快速了解visdom的功能,请查看example目录,或阅读以下详细信息。

Visdom Arguments(仅限Python)

python visdom客户端有以下几种选择:

  • server:visdom服务器的主机名(默认值:'http://localhost')
  • port:visdom服务器的端口(默认值:8097)
  • base_url:基本visdom服务器url(默认:/)
  • env:没有提供env时要绘制的默认环境(默认是main)
  • raise_exceptions:失败时引发异常,而不是打印它们(默认值:"True"(性能好))
  • log_to_filename:如果不是全部,则将所有绘图和更新事件记录到给定文件中(附加模式),以便以后可以使用replay_log来重放它们(默认值:"None")
  • use_incoming_socket:启用套接字以从Web客户端接收事件,允许用户注册回调(默认值:"True")
  • http_proxy_host:已弃用。使用Proxies参数可获得完整的代理支持。
  • http_proxy_port:已弃用。使用Proxies参数可获得完整的代理支持。
  • username:用于验证的用户名,如果服务器以-enable_login开头(默认值:None)
  • password:用于验证的密码,如果服务器以-enable_login开头(默认:None)
  • proxies:字典映射协议,用于在每个请求上使用的代理URL(例如{http:foo.bar:3128})。(默认值:"无")
  • offline:标记为在脱机模式下运行visdom,在该模式下,所有请求都记录到文件而不是服务器上。需要设置"logtofilename"。在离线模式下,所有不创建或更新绘图的visdom命令都将简单地返回True。(默认值:"False")

其他选项当前未使用(端点,ipv6)或用于内部功能。

基本功能

Visdom提供以下基本的可视化功能:

  • vis.image:图片
  • vis.images:图像列表
  • vis.text:任意HTML
  • vis.properties:属性网格
  • vis.audio:音频
  • vis.video:视频
  • vis.svg:SVG对象
  • vis.matplot:matplotlib图
  • vis.save:序列化状态服务器端

绘图

我们包装了几种常见的绘图类型,以轻松创建基本的可视化效果。这些可视化由Plotly(https://plot.ly/)提供支持。

当前支持以下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:网格图

通用图

请注意,服务器API遵循"数据"和"布局"对象的Plotly约定,因此你可以产生自己的任意"Plotly"可视化效果:

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'})

其他

  • vis.close:按ID关闭窗口
  • vis.deleteenv:通过envid删除环境
  • vis.win_exists:通过ID检查窗口是否已存在
  • vis.getenvlist:获取服务器上所有环境的列表
  • vis.win_hash:获取窗口内容的md5哈希值
  • vis.getwindowdata:获取窗口的当前数据
  • vis.check_connection:检查服务器是否已连接
  • vis.replay_log:从提供的日志文件中重播操作

细节

Visdom 介绍 | 二第1张

基础内容

vis.image

该函数绘制一个"img"。它以CxHxW张量的img作为输入

支持以下opts:

  • jpgquality:JPG的质量(number 0-100)。如果已定义,图像将另存为JPG以减小文件大小。如果未定义,图像将另存为PNG。
  • caption:图片的标题
  • store_history:将所有图像存储在同一窗口中,并在底部附加一个滑块,使你可以选择要查看的图像。将新图像发送到具有历史记录的图像时,必须始终提供此选项。

注意你可以在图像窗格上使用alt查看光标的x/y坐标。你也可以按ctrl键滚动缩放,按住alt键滚动可以垂直平移,按住alt键滚动则可以水平平移。在窗格内双击以将图像恢复为默认值。

vis.images

此函数绘制"图像"列表。它需要一个输入"BxCxHxW"张量或一个"图像列表",且大小均相同。它使图像的尺寸为(B/nrow,nrow)。

支持以下参数和opts:

  • nrow:连续的图像数量
  • padding:在图片周围填充,在所有4条边均等填充
  • opts.jpgquality:JPG的质量(number 0-100)。如果已定义,图像将另存为JPG以减小文件大小。如果未定义,图像将另存为PNG。
  • opts.caption:图片的标题
vis.text

此函数在框中打印文本。你可以使用它嵌入任意HTML。它以"text"字符串作为输入。目前不支持特定的opts

vis.properties

此函数在窗格中显示可编辑的属性。属性应该是字典列表,例如:

    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']},
    ]

支持的类型:

  • text:字串
  • number:十进制数字
  • button:标有"值"的按钮
  • checkbox:布尔值呈现为复选框
  • select:多个值选择框
    • value:所选值的ID(从零开始)
    • values:可能值的列表

在属性值更新时调用回调:

  • event_type:"PropertyUpdate"
  • propertyId:在properties列表中的位置
  • value:新值

目前不支持特定的opts

vis.audio

此函数播放音频。它以音频文件名作为输入文件或包含波形的"N"张量("Nx2"矩阵用于立体声音频)。该函数不支持任何特定于绘图的opts

支持以下opts:

  • opts.sample_frequency:采样频率(integer> 0;默认= 44100)

已知问题:Visdom使用scipy将张量输入转换为wave文件。一些已知版本的Chrome不能播放这些wave文件(Firefox和Safari可以正常工作)。

vis.video

此函数播放视频。它以视频的文件名作为输入video或LxHxWxC大小的张量包含视频的所有帧作为输入。函数不支持任何特定于绘图的opts

支持以下opts:

  • opts.fps:视频的FPS(integer> 0;默认= 25)

注意:使用tensor输入要求ffmpeg已安装并工作。你能否播放视频取决于你使用的浏览器:在OGG容器中支持Theano编解码器(Chrome支持此函数)。

vis.svg

该函数绘制一个SVG对象。它以SVG字符串svgstr或SVG文件svgfile的名称。该函数不支持任何特定的opts。

vis.matplot

此函数绘制Matplotlibplot。函数支持一个特定于绘图的选项:"可调整大小"。

注意:设置为"True"时,将使用窗格。你需要安装beautifulsoup4lxml软件包。

注意:matplot的渲染后端与绘图中的绘图不同,效率较低。使用过多的Matplot窗口可能会降低视觉效果。

vis.plotlyplot

该函数绘制一个Plotly图对象。它没有显式地采用选项,因为它假定你已经显式配置了图形的"布局"。

注意你必须安装"plotly"软件包才能使用此函数。通常可以通过运行"pip install plotly"来安装它。

vis.embeddings

此函数使用Barnes-Hut t-SNE算法)可视化一组特征。

该函数接受以下参数:

  • features:张量列表
  • labels:为features提供的张量的相应标签列表
  • data_getter = fn :(可选)一个函数,该函数将要素数组中的索引作为参数并返回张量的摘要表示。如果已设置,则还必须设置"data_type"
  • data_type = str :(可选),当前唯一可接受的值是"html"

目前,我们假设唯一标签的数量不超过10个,将来,我们希望为其他情况提供可选的颜色图。

在用户界面中,你还可以围绕特征子集绘制lasso(套索)。这将在所选子集上重新运行t-SNE可视化。

vis.save

此函数保存在visdom服务器上仍然有效的envs。它需要输入要保存的环境ID列表。

绘图

下面给出了有关绘图函数的更多详细信息。

绘制函数的输入有所不同,尽管大多数函数将包含数据的张量"X"和包含可选数据变量(例如标签或时间戳)的)张量"Y"(可选)作为输入。所有绘图函数均以可选的"win"作为输入,可用于绘制到特定窗口中。每个绘图函数还返回绘图窗口的"win"。还可以指定添加可视化效果的"env"。

vis.scatter

此函数绘制2D或3D散点图。它取一个Nx2或Nx3张量X作为输入,它指定了散点图中N个点的位置。一个包含范围在1到K之间的离散标签的可选的N个张量Y也可以指定,标签将反映在标记的颜色上。

更新可以用来有效地更新现有图的数据。使用'append'来添加数据,使用'replace'来使用新数据,或使用'remove'来删除由name指定的跟踪。如果不存在,使用update ='append'将创建一个图,否则将其追加到现有图上。如果要更新单个跟踪,请使用"name"指定要更新的跟踪的名称。全部为NaN的更新数据将被忽略(可用于屏蔽更新)。

支持以下opts:

  • opts.markersymbol:标记符号(string;默认='dot')
  • opts.markersize:标记大小(number;默认='10')
  • opts.markercolor:每个标记的颜色。(torch.* Tensor;默认=nil)
  • opts.legend:table包含图例名称
  • opts.textlabels:每个点的文本标签(list:默认 =None)
  • opts.layoutopts:图形后端接受布局的任何其他选项的字典。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.traceopts:字典将跟踪名称或索引映射到图形后端接受的其他选项的字典。例如traceopts = {'plotly':{'myTrace':{'mode':'markers'}}}
  • opts.webgl:使用WebGL进行绘图("boolean";默认="false")。如果绘图包含太多点,则速度更快。谨慎使用,因为浏览器在单个页面上最多允许两个WebGL上下文。

opts.markercolor是具有整数值的张量。张量的大小可以为"N"或"Nx3"或"K"或"Kx3"。

  • 大小为N的张量:每个数据点的单个强度值。0=黑色,255=红色
  • 大小为"Nx3"的张量:每个数据点的红色,绿色和蓝色强度。0,0,0=黑色,255,255,255=白色
  • "K""Kx3"大小的张量:不是每个数据点都有唯一的颜色,而是为特定标签的所有点共享相同的颜色。
vis.line

此函数绘制线图。它以一个NNxM张量作为输入,"Y"指定"M"行的值(连接"N"个点)绘图。它还需要一个可选的X张量来指定相应的x轴值;X可以是N张量(在这种情况下线将共享相同的x轴值)或具有与"Y"相同的尺寸。

更新可以用来有效地更新现有图的数据。使用'append'附加数据,'replace'使用新数据,或'remove'删除由name指定的跟踪。如果要更新单个跟踪,请使用"名称"指定要更新的跟踪的名称。全部为NaN的更新数据将被忽略(可用于屏蔽更新)。

支持以下opts:

  • opts.fillarea:填充线以下的区域(boolean)
  • opts.markers:显示标记(boolean;默认=false)
  • opts.markersymbol:标记符号(string;默认='dot')
  • opts.markersize:标记大小(number;默认='10')
  • opts.linecolor:线条颜色(np.array;默认=None)
  • opts.dash:每行的行破折号类型(np.array;默认='solid'),为soliddashdashdotdash之一,大小应与画线
  • opts.legend:table包含图例名称
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.traceopts:dict将跟踪名称或索引映射到plot.ly接受的其他选项的dict
  • opts.webgl:使用WebGL进行绘图("boolean";默认="false")。如果绘图包含太多点,则速度更快。谨慎使用,因为浏览器在单个页面上最多允许两个WebGL上下文。
vis.stem

此函数绘制stem图。它以一个NNxM张量作为输入X,它指定M时间序列中N点的值。可以指定一个可选的包含时间戳的NNxM张量Y以及如果YN张量,则所有M时间序列都假定为具有相同的时间戳。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.legend:table包含图例名称
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.heatmap

此函数绘制热图。它以一个NxM张量X为输入,指定热图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.columnnames:table包含X轴标签
  • opts.rownames:包含y轴标签的table
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
  • opts.nancolor:用于绘制NaNs的颜色。如果为"None",则将"NaN"绘制为透明。(string;默认=None)
vis.bar

此函数绘制规则的,堆叠的或分组的条形图。它需要输入一个NNxM张量X来指定每个条形。如果"X"包含"M"列,则对应于每一行的值是堆叠还是分组(取决于"opts.stacked"的方式)。除了X,还可以指定一个(可选的)N张量Y。包含相应的x轴值。

当前支持以下特定于图的opts:

  • opts.rownames:table包含x轴标签
  • opts.stacked:在X中堆叠多列
  • opts.legend:包含图例标签的table
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.histogram

此函数绘制指定数据的直方图。它作为输入一个N张量X来指定要构造其的数据直方图。

当前支持以下特定于图的opts:

  • opts.numbins:箱数(number;默认=30)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.boxplot

此函数绘制指定数据的箱形图。它作为输入,一个"N""NxM"张量"X",用于指定其中的"N"个数据值来构造"M"箱形图。

当前支持以下特定于图的opts:

  • opts.legend:X中每个列的标签
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.surf

此函数绘制表面图。它以一个NxM张量X为输入。它指定表面图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.contour

此函数绘制轮廓图。它以一个NxM张量X为输入。它指定等高线图中每个位置的值。

支持以下opts:

  • opts.colormap:颜色图(string;默认='Viridis')
  • opts.xmin:剪辑最小值(number;默认=X:min())
  • opts.xmax:剪辑最大值(number;默认=X:max())
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
vis.quiver

该函数绘制一个抖动图,其中箭头的方向和长度由NxM张量Xy决定。可以提供两个可选的NxM张量gridX和gridY,指定箭头的偏移量;默认情况下,箭头将在常规网格上显示。

支持以下opts:

  • opts.normalize:最长箭头的长度(number)
  • opts.arrowheads:显示箭头(boolean;默认=true)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
可见网格

此函数从一组顶点中定义的一组顶点绘制网格图"Nx2""Nx3"矩阵"X",以及在可选"Mx2""Mx3"矩阵Y。

支持以下opts:

  • opts.color:颜色(string)
  • opts.opacity:多边形的不透明度("number"介于0和1之间)
  • opts.layoutopts:图形后端为布局接受的任何其他选项的dict。例如layoutopts = {'plotly':{'legend':{'x':0,'y':0}}}
自定义图

绘图功能采用可选的opts表作为输入,可用于更改(通用或特定于绘图的)绘图属性。所有输入参数都在一个表中指定;输入参数根据输入表中的键进行匹配。

下列opts是通用的,因为它们对于所有可视化都是相同的(plot.image,plot.text,plot.video和plot.audio除外):

  • 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轴上的刻度线位置("number" s的"table"表)
  • opts.xticklabels:勾选x轴上的标签(strings的table)
  • opts.xtickstep:x轴刻度之间的距离(number)
  • opts.xtickfont:x轴标签的字体(字体信息的字典(https://plot.ly/javascript/reference/#layout-font))
  • opts.ytype:y轴的类型('linear''log')
  • opts.ylabel:y轴的标签
  • opts.ytick:在y轴上显示刻度(boolean)
  • opts.ytickmin:y轴上的第一个刻度(number)
  • opts.ytickmax:y轴上的最后一个刻度(number)
  • opts.ytickvals:y轴上的刻度位置(number类型的s的table)
  • opts.yticklabels:在y轴上打勾标签(string类型的s的table)
  • opts.ytickstep:y轴上刻度线之间的距离(number)
  • opts.ytickfont:y轴标签的字体(字体信息的字典(https://plot.ly/javascript/reference/#layout-font))
  • opts.marginleft:左边距(以像素为单位)
  • opts.marginright:右边距(以像素为单位)
  • opts.margintop:上边距(以像素为单位)
  • opts.marginbottom:底边距(以像素为单位)

其他选项是特定于可视化的,并在API手册中进行了描述。

其他

vis.close

此函数关闭特定的窗口。它需要输入窗口ID"win"和环境ID"eid"。使用win作为None关闭环境中的所有窗口。

vis.delete_env

此函数将完全删除指定的环境。它需要env ideid作为输入。

注意:delete_env删除环境中的所有数据,并且是不可撤销的。除非绝对要删除环境,否则请勿使用。

vis.fork_env

此函数派生类似于UI功能的环境。

参数:

  • prev_eid:我们要fork的环境ID。
  • eid:将用fork创建的新环境ID。

注意:fork_env如果不存在的env被fork,则会发生异常。

vis.win_exists

该函数返回一个布尔值,指示服务器上是否已经存在窗口"win"。如果出现问题,则返回None。

可选参数:

  • env:搜索窗口的环境。默认为None
vis.getenvlist

此函数在调用时返回服务器上所有环境的列表。它不带参数。

vis.win_hash

如果服务器上存在窗口"win"的内容,则此函数返回md5哈希值。否则返回None。

可选参数:

  • env:搜索窗口的环境。默认为None
vis.getwindowdata

此函数返回给定窗口的窗口数据。如果win为None,则返回环境中所有窗口的数据。

参数:

  • env:搜索窗口的环境。
  • win:要为其返回数据的窗口。设置为"无"以检索环境中的所有窗口。
vis.check_connection

此函数返回布尔值,指示是否已连接服务器。它接受可选参timeout_seconds数秒以等待服务器启动。

vis.replay_log

此函数获取虚拟日志的内容,并将其重播到当前服务器以恢复状态或处理所有丢失的条目。

参数:

  • log_filename:重播日志文件的内容。

许可

visdom的许可是LICENSE文件中的Creative Commons Attribution-NonCommercial 4.0 International Public许可。

关于Lua Torch支持的注意事项

v0.1.8.4之后,不再支持Lua Torch。如果你想使用Torch支持,则需要下载该版本。你可以在此处按照使用说明进行操作,但不再受正式支持。

贡献

请参阅在CONTRIBUTING.md的贡献

致谢

Visdom受到display之类的工具的启发,并依赖Plotly(https://plot.ly/)作为绘图前端。

欢迎关注磐创博客资源汇总站:http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:http://pytorch.panchuang.net/

OpenCV中文官方文档:http://woshicver.com/

免责声明:文章转载自《Visdom 介绍 | 二》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Shiro授权及注解式开发vue中的watch监听数据变化以及watch中各属性详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Unity多语言本地化改进版

简介 之前捣鼓过一个通过csv配置游戏多语言支持的小工具,但是发现使用过程中,通过notepad++去进行转码很不方便,并且直接将配置的csv不加密的放在游戏中心里感觉不是很踏实 于是乎~~ 新的方案 1.在PC/MAC平台上解析多语言配置,也就是editor运行环境中解析csv或者excel 2.通过在Editor运行过程中生成多个语言对象,然后序列化并...

DataTable添加列和行的三种方法

#region 方法一: DataTable tblDatas =new DataTable("Datas"); DataColumn dc =null; dc = tblDatas.Columns.Add("ID", Type.GetType("System.Int32")); dc.AutoIncrement =true;//自动增加...

mysql性能优化-慢查询分析、优化索引和配置【转】

一、优化概述 二、查询与索引优化分析 1性能瓶颈定位 Show命令 慢查询日志 explain分析查询 profiling分析查询 2索引及查询优化 三、配置优化 1)      max_connections 2)      back_log 3)      interactive_timeout 4)      key_buffer_size 5)  ...

FFmpeg解码H264及swscale缩放详解

原文  http://blog.csdn.net/gubenpeiyuan/article/details/19548019 主题 FFmpeg 本文概要:         本文介绍著名开源音视频编解码库ffmpeg如何解码h264码流,比较详细阐述了其h264码流输入过程,解码原理,解码过程。同时,大部分应用环境下,以原始码流视频大小展示并不是...

关于layui数据表格的各种事件

table.on('tool(demo)', function(obj){});监听工具条事件,tool 是工具条事件名,demo 是 table 原始容器的属性 lay-filter="对应的值"; table.on('toolbar(demo)', function(obj){});监听头部工具条事件,toolbar 是工具条事件名,demo 是 ta...

C#操作Word,写数据,插入图片

本篇介绍的是如何在C#中往word里面写入数据。 如何在线的操作文档:  c#在线操作文档 关于Aspose.Word控件的介绍,请戳→ 介绍 首先需要去下载这个dll文件,然后引用到你的项目当中。地址→查看下载地址 附一个辅助类来操作此dll 利用书签把数据写入到Word当中 文本和图片 第一步,你先要去准备Word模板(新建一个Word然后复制到项目中...