Visdom scatter()绘制散点图(非常详细,附带实例)
Visdom 是 PyTorch 深度学习最常用的模型可视化工具。Visdom 提供了多种绘图函数,可以用于实现数据的可视化。
scatter() 函数用来画 2D 或 3D 数据的散点图。它需要输入 N×2 或 N×3 的张量 X 来指定 N 个点的位置。一个可供选择的长度为 N 的向量用来保存 X 中的点对应的标签(1 到 K)。标签可以通过点的颜色反映出来。
scatter() 支持下表中的选项:
生成普通散点图,代码如下:
输出如下图所示:

图 1 普通散点图
生成带着文本标签的散点图,代码如下:
输出如下图所示:

图 2 带着文本标签的散点图
生成三维散点图,代码如下:
输出如下图所示:

图 3 三维散点图
scatter() 函数用来画 2D 或 3D 数据的散点图。它需要输入 N×2 或 N×3 的张量 X 来指定 N 个点的位置。一个可供选择的长度为 N 的向量用来保存 X 中的点对应的标签(1 到 K)。标签可以通过点的颜色反映出来。
scatter() 支持下表中的选项:
| 选项 | 说明 |
|---|---|
| opts.markersymbol | 标记符号 (string; default = 'dot')。 |
| opts.markersize | 标记大小 (number; default = '10')。 |
| opts.markercolor | 每个标记的颜色 (torch.*Tensor; default = nil)。 |
| opts.legend | 包含图例名字的 table。 |
| opts.textlabels | 每一个点的文本标签(list: default = None)。 |
| opts.layoutopts | 图形后端为布局接受的任何附加选项的字典,比如 layoutopts={'plotly':{'legend': {'x':0, 'y':0}}}。 |
| opts.traceopts | 将跟踪名称或索引映射到 plotly 为追踪接受的附加选项的字典,比如 traceopts= {'plotly': {'myTrace': {'mode': 'markers'}}}。 |
| opts.webgl | 使用 WebGL 绘图(布尔值,default= false)。WebGL 可以为 HTML5 Canvas 提供硬件 3D 加速渲染,这样 Web 开发人员就可以借助系统显卡在浏览器中更流畅地展示 3D 场景和模型,还能创建复杂的导航和数据可视化。 |
| options.markercolor |
是一个包含整数值的 Tensor。Tensor 的形状可以是 N 或 N×3、K 或 K×3:
|
生成普通散点图,代码如下:
# 导入相关库
import visdom
import numpy as np
# 创建 Visdom 可视化对象
vis = visdom.Visdom()
# 生成一个包含 100 个随机数的数组 Y
Y = np.random.rand(100)
# 使用 Visdom 的 scatter 函数绘制散点图。
# 传入 X 轴和 Y 轴的数据,并设置一些配置选项,如图例、坐标轴范围和刻度步长等
old_scatter = vis.scatter(
X=np.random.rand(100, 2), # X 轴数据,随机生成 100 行 2 列
Y=(Y[Y > 0] + 1.5).astype(int), # Y 轴数据:大于 0 的值加 1.5 并转为 int
opts=dict(
legend=['Didnt', 'Update'], # 图例标签
xtickmin=-50, # X 轴刻度最小值
xtickmax=50, # X 轴刻度最大值
xtickstep=0.5, # X 轴刻度步长
ytickmin=-50, # Y 轴刻度最小值
ytickmax=50, # Y 轴刻度最大值
ytickstep=0.5, # Y 轴刻度步长
markersymbol='cross-thin-open' # 标记符号
)
)
# 使用 update_window_opts 更新之前绘制的散点图的配置选项
# 这里更新了图例、坐标轴范围和刻度步长等
vis.update_window_opts(
win=old_scatter, # 要更新的窗口
opts=dict(
legend=['2019年', '2020年'], # 更新后的图例标签
xtickmin=0, # 更新后的 X 轴最小值
xtickmax=1, # 更新后的 X 轴最大值
xtickstep=0.5, # 更新后的 X 轴步长
ytickmin=0, # 更新后的 Y 轴最小值
ytickmax=1, # 更新后的 Y 轴最大值
ytickstep=0.5, # 更新后的 Y 轴步长
markersymbol='cross-thin-open' # 更新后的标记符号
)
)
这段代码主要使用 Visdom 进行数据可视化操作。通过以上代码可以绘制一幅散点图,并根据需要更新其配置选项,以实现数据的可视化展示。Visdom 提供了一种方便的方式来实时观察和交互数据。输出如下图所示:

图 1 普通散点图
生成带着文本标签的散点图,代码如下:
# 导入相关库
import visdom
import numpy as np
# 使用 visdom 库绘制散点图
vis.scatter(
# 定义 X 轴数据,随机生成 6 行 2 列的数据
X=np.random.rand(6, 2),
# 定义配置选项,这里使用字典来指定一些配置
opts=dict(
# 设置每个散点的文本标签,标签内容为 'Label%d' % (i+1),
# 其中 %d 表示数字,i 的取值范围为 0~5
textlabels=['Label %d' % (i + 1) for i in range(6)]
)
)
执行这段代码后,将会在 Visdom 界面中显示一个带有文本标签的散点图。每个散点都会显示对应的文本标签。这样方便对不同的散点进行标识和区分。输出如下图所示:

图 2 带着文本标签的散点图
生成三维散点图,代码如下:
# 导入相关库
import visdom
import numpy as np
# 调用 visdom 的 scatter 方法来绘制散点图
vis.scatter(
# X 轴数据,随机生成 100 行 3 列的数据
X=np.random.rand(100, 3),
# Y 轴数据,对 Y 加 1.5 后转换为整数
Y=(Y + 1.5).astype(int),
# 配置选项
opts=dict(
# 图例标签
legend=['男性', '女性'],
# 标记大小
markersize=5,
# X 轴刻度的最小值
xtickmin=0,
# X 轴刻度的最大值
xtickmax=2,
# X 轴标签
xlabel='数量',
# X 轴刻度值
xtickvals=[0, 0.75, 1.5, 2],
# Y 轴刻度的最小值
ytickmin=0,
# Y 轴刻度的最大值
ytickmax=2,
# Y 轴刻度的步长
ytickstep=0.5,
# Z 轴刻度的最小值
ztickmin=0,
# Z 轴刻度的最大值
ztickmax=1,
# Z 轴刻度的步长
ztickstep=0.5
)
)
这段代码使用 Visdom 库绘制了一幅带有特定配置的散点图。通过配置可以定制散点图的外观和显示细节。执行代码后,将在 Visdom 界面中显示带有图例、标记大小、坐标轴标签和刻度等的散点图。这样可以根据需要进行数据可视化和分析。输出如下图所示:

图 3 三维散点图
ICP备案:
公安联网备案: