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 堆叠区域
ICP备案:
公安联网备案: