Visdom line()绘制线型图(非常详细,附带实例)
Visdom 是 PyTorch 深度学习最常用的模型可视化工具。Visdom 提供了多种绘图函数,可以用于实现数据的可视化。
line() 函数用来画一条线。它接受一个 N 或 N×M 张量 Y 作为输入,指定连接 N 个点的 M 条线的值。它还接受一个可选的 X 张量,指定相应的 X 轴值。X 可以是一个 N 张量(在这种情况下,所有的线都有相同的 X 轴值),或者和 Y 大小相同。
下表是该函数支持的选项:
下面是一个绘制线型图的例子,代码如下:
输出如下图所示:

图 1 线型图
实现实线、虚线等不同线的代码如下:
输出如下图所示:

图 2 实线和虚线
堆叠区域,代码如下:

图 3 堆叠区域
line() 函数用来画一条线。它接受一个 N 或 N×M 张量 Y 作为输入,指定连接 N 个点的 M 条线的值。它还接受一个可选的 X 张量,指定相应的 X 轴值。X 可以是一个 N 张量(在这种情况下,所有的线都有相同的 X 轴值),或者和 Y 大小相同。
下表是该函数支持的选项:
选项 | 说明 |
---|---|
opts.fillarea | 填满线下区域 (boolean)。 |
opts.markers | 显示标记 (boolean; default = false)。 |
opts.markersymbol | 标记符号 (string; default = 'dot')。 |
opts.markersize | 标记大小 (number; default = '10')。 |
opts.linecolor | 线颜色 (np.array; default = None)。 |
opts.dash | 每一行的破折号类型 (np.array; default = 'solid'),实线、破折号、虚线或破折号中的一个,其大小应与所画线的数目相匹配。 |
opts.legend | 包含图例名称的表。 |
opts.layoutopts | 图形后端为布局接受的任何附加选项的字典,比如 layoutopts = {'plotly':{'legend': {'x':0, 'y':0}}}。 |
opts.traceopts | 将跟踪名称或索引映射到 plot.ly 为追踪接受的附加选项的字典,比如 traceopts= {'plotly': {'myTrace': {'mode': 'markers'}}}。 |
opts.webgl | 用于指定是否使用 WebGL 进行绘图。它是一个布尔值,默认为 false。当图包含大量点时,使用 WebGL 可以加快绘图速度。但是需要注意,由于浏览器限制,在一个页面上不允许同时存在多个 WebGL 上下文,因此应谨慎使用此选项。 |
下面是一个绘制线型图的例子,代码如下:
# 导入相关库 import visdom import numpy as np # 生成一个在 -5~5 等间距的数组,包含 100 个元素 Y = np.linspace(-5, 5, 100) # 使用 Visdom 库的line方法来绘制线型图 vis.line( # Y 轴数据,将 Y 的平方和 Y+5 的平方根组合成一个 2 列的矩阵 Y=np.column_stack((Y * Y, np.sqrt(Y + 5))), # X 轴数据,将 Y 自身重复两次组成一个 2 列的矩阵 X=np.column_stack((Y, Y)), # 配置选项,设置不显示标记 opts=dict(markers=False), )执行以上代码后,将会在 Visdom 界面中显示一幅线型图,其中 X 轴和 Y 轴的数据分别由上述设置确定。通过这种方式,可以使用 Visdom 进行数据可视化,并观察线型图的特征。
输出如下图所示:

图 1 线型图
实现实线、虚线等不同线的代码如下:
# 导入相关库 import visdom import numpy as np # 创建一个 visdom 窗口,并使用 vis.line 绘制线条 win = vis.line( # X 轴数据:将三个在 0 和 10 之间的等差数列组合成一个 3 列的矩阵 X=np.column_stack(( np.arange(0, 10), np.arange(0, 10), np.arange(0, 10), )), # Y 轴数据:将三个在 5 和 10 之间的线性插值数列分别加上 5、10 后组合成一个 3 列的矩阵 Y=np.column_stack(( np.linspace(5, 10, 10), np.linspace(5, 10, 10) + 5, np.linspace(5, 10, 10) + 10, )), # 配置选项 opts=dict{ # 线条样式:一个包含 'solid'、'dash'、'dashdot' 的 NumPy 数组 dash=np.array(['solid', 'dash', 'dashdot']), # 线条颜色:一个包含三种颜色值的 NumPy 数组 linecolor=np.array([ [0, 191, 255], [0, 191, 255], [255, 0, 0], ]), # 窗口标题 title='不同类型的线' } ) # 在之前创建的窗口 win 上继续绘制线条 vis.line( # X 轴数据:在 0 和 10 之间的等差数列 X=np.arange(0, 10), # Y 轴数据:在 5 和 10 之间的线性插值数列加上 15 Y=np.linspace(5, 10, 10) + 15, # 使用之前创建的窗口 win win=win, # 线条名称 name='4', # 更新方式为插入 update='insert', # 配置选项 opts=dict{ # 线条颜色:只包含红色的 NumPy 数组 linecolor=np.array([ [255, 0, 0], ]), # 线条样式:只包含点的 NumPy 数组 dash=np.array(['dot']) } )通过上述代码可以在 Visdom 窗口中绘制多条具有不同样式和颜色的线条,并进行相应的配置。
输出如下图所示:

图 2 实线和虚线
堆叠区域,代码如下:
# 导入相关库 import visdom import numpy as np # 生成一个在 0 和 4 之间等间距的 200 个点的数列 Y = np.linspace(0, 4, 200) # 使用 Visdom 库绘制堆积面积图 win = vis.line( # Y 轴数据:将 Y 数列分别进行平方根运算和加 2 运算,并堆叠在一起 Y=np.column_stack((np.sqrt(Y), np.sqrt(Y) + 2)), # X 轴数据:与 Y 数列相同 X=np.column_stack((Y, Y)), # 图表选项 opts=dict( fillarea=True, # 填充区域 showlegend=False, # 不显示图例 width=380, # 宽度 height=330, # 高度 ytype='log', # Y 轴类型为对数 title='堆积面积图', # 图表标题 marginleft=30, # 左边距 marginright=30, # 右边距 marginbottom=80, # 底部边距 margintop=30 # 顶部边距 ) )输出如下图所示:

图 3 堆叠区域