Visdom使用

news2024/11/8 23:11:29

Visdom

Visdom是一个面向科学研究的可视化工具,可以帮助你可视化和理解数据。它是 Facebook Research 开发的一个基于 Python 的可视化库,可以在Web浏览器中实时显示和更新图表、图像、文本等各种数据。

1 安装Visdom

可以使用以下命令安装Visdom:

pip install visdom

2 启动Visdom服务器

在终端中运行以下命令启动Visdom服务器:

python -m visdom.server

根据显示在浏览器中输入: http://localhost:8097

3 在代码中使用Visdom

import visdom
vis = visdom.Visdom()
# 在创建 Visdom 对象之后,可以使用以下方法来进行可视化
vis.line(X, Y, opts=None, win=None, env=None, update=None, name=None)# 绘制折线图。
vis.image(img, opts=None, win=None, env=None, update=None, name=None) # 绘制图片。
vis.images(imgs, opts=None, win=None, env=None, update=None, name=None) # 批量绘制图片。
vis.heatmap(X, opts=None, win=None, env=None, update=None, name=None)# 绘制热力图。
vis.contour(X, Y=None, Z=None, opts=None, win=None, env=None, update=None, name=None)# 绘制等高线图。
vis.scatter(X, Y=None, opts=None, win=None, env=None, update=None, name=None)# 绘制散点图。
vis.bar(X, opts=None, win=None, env=None, update=None, name=None) # 绘制柱状图。
vis.pie(X, opts=None, win=None, env=None, update=None, name=None) # 绘制饼图。
vis.stem(X, Y=None, opts=None, win=None, env=None, update=None, name=None) # 绘制棒图。
vis.text(text, opts=None, win=None, env=None, update=None, name=None) # 绘制文本。
vis.properties(opts, win=None, env=None, update=None, name=None) # 设置可视化窗口的属性。
vis.updateTrace(X, Y, win, env=None, name=None) # 更新折线图或散点图。
vis.close(win=None, env=None) # 关闭可视化窗口。
vis.clear(win=None, env=None) # 清空可视化窗口。
vis.save(envs=None) # 保存可视化窗口的状态,以便下次使用。
#  其中,参数的含义如下:
#  `X`:x轴上的数据,可以是标量、向量、矩阵或张量。
#  `Y`:y轴上的数据,可以是标量、向量、矩阵或张量。
#  `Z`:等高线图上的高度值,可以是标量、向量、矩阵或张量。
#  `opts`:可视化选项,包含各种绘图参数的字典。
#  `win`:可视化窗口的名称。
#  `env`:可视化窗口所属的环境名称。
#  `update`:更新的方式,可以是 "append" 或 "replace"。
#  `name`:数据的名称。
# 示例
visdom.line(X=None, Y=None, win=None, update=None, name=None
opts = dict(
    title="图表标题",
    xlabel="x 轴标签",
    ylabel="y 轴标签",
    legend="一个包含数据集名称的列表,用于在图例中显示不同的数据集",
    width="图表宽度",
    height="图表高度",
    marginleft="左侧边距",
    marginright="右侧边距",
    margintop="顶部边距",
    marginbottom="底部边距",
    xtick="x 轴刻度线 可以是一个包含刻度值的列表,或者是一个形如 (start, end, step) 的元组,用于指定刻度范围和步长 ",
    ytick="y 轴刻度线 可以是一个包含刻度值的列表,或者是一个形如 (start, end, step) 的元组,用于指定刻度范围和步长 ",
    markers="数据点标记类型 可以是一个包含标记名称的列表,或者是一个标记名称 支持的标记类型包括='dot'、'cross'、'plus'、'square'、'diamond'、'triangle-up'、'triangle-down'、'star'、'hexagon'、'pentagon'、'octagon' 和 'vline' ",
    markercolor="数据点标记颜色 可以是一个包含颜色名称或颜色代码的列表,或者是一个颜色名称或颜色代码 如果提供了一个包含多个颜色的列表,则每个数据集将使用该列表中的下一个颜色 ",
    linecolor="折线颜色 可以是一个颜色名称或颜色代码 ",
    fillarea="是否填充折线下方的区域 可以是一个布尔值,也可以是一个形如 (lower_bound, upper_bound) 的元组,用于指定填充区域的上限和下限 ",
    fillcolor="填充颜色 可以是一个颜色名称或颜色代码 如果提供了一个包含多个颜色的列表,则每个数据集将使用该列表中的下一个颜色 ",
))

4 可视化线条

单条线

import visdom

# 创建 Visdom 客户端
vis = visdom.Visdom()

# 定义直线的 x 和 y 坐标
x = [1, 2, 3, 4, 5]
y = [1, 3, 2, 4, 5]

# 绘制直线
line = vis.line(X=x, Y=y, opts=dict(title='Line', xlabel='x', ylabel='y'))


两条线,按点更新

import numpy as np
import visdom

# 创建 Visdom 客户端
vis = visdom.Visdom()

# 绘制多条直线,每次绘制一点
vis.line(X=[1], Y=[[2, 3]], win='1', update='append',
         opts=dict(title='Two Lines', xlabel='x', ylabel='y', legend=['Line 1', 'Line 2'])
         )
vis.line(X=[2], Y=[[6, 7]], win='1', update='append',
         opts=dict(title='Two Lines', xlabel='x', ylabel='y', legend=['Line 1', 'Line 2'])
         )

实际应用

import numpy as np
import visdom
# 创建 Visdom 客户端
vis = visdom.Visdom()
for epoch in range(0, 20):
trainloss = np.random.randint(1, 50, dtype=np.uint8)
valloss = np.random.randint(1, 50, dtype=np.uint8)
vis.line(X=[epoch], Y=[[trainloss, valloss]], win='loss', update='append', opts=dict(title='LOSS', legend=['trainloss', 'valloss']))

多条线,按条更新

import numpy as np
import visdom

# 创建 Visdom 客户端
vis = visdom.Visdom()

# 绘制多条直线,每次绘制一条
vis.line(X=[1, 2, 3], Y=[4, 5, 7], win='2', update='append', name='line1',
         opts=dict(title='Lines', xlabel='x', ylabel='y', legend=['Line 1', 'Line 2', 'Line 3']) )
vis.line(X=[2, 3, 4], Y=[4, 6, 7], win='2', update='append', name='line2',
         opts=dict(title='Lines', xlabel='x', ylabel='y', legend=['Line 1', 'Line 2', 'Line 3']) )
vis.line(X=[3, 4, 5], Y=[4, 6, 7], win='2', update='append', name='line3',
         opts=dict(title='Lines', xlabel='x', ylabel='y', legend=['Line 1', 'Line 2', 'Line 3']) )


5 可视化图片

一张图片

import numpy as np
import visdom

# 创建 Visdom 客户端
vis = visdom.Visdom()

image = np.random.randint(0, 255, (3, 40, 40), dtype=np.uint8)  # shape=[C,H,W]
vis.image(image, win='image', opts={'title': 'RGB Image'})


多张图片

import numpy as np
import visdom

# 创建 Visdom 客户端
vis = visdom.Visdom()

images = np.random.randint(0, 255, (16, 3, 40, 40))  # shape=[B,C,H,W]
vis.images(images, win='images', nrow=4, opts={'title': 'RGB Image'})


6 可视化文本

一段文本

viz.text('Hello, world!', win='text')

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/709672.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海思平台图像的IQ调试

目录 1.何为ISP何为IQ调试 1.1、ISP概念 1.2、在哪里做ISP 1.3、何为IQ 1.4、总结 2.海思MPP中ISP的实现框架 2.1、官方文档 2.2、sample中ISP相关部分 2.3、sensor注册内部细节 2.4、ISP注册内部细节 3.IQ调试相关的概念 3.1、黑电平 3.2、镜头阴影矫正 3.3、坏点…

《移动互联网技术》第十一章 Android应用工程案例: 掌握Android系统的需求分析和设计以及 Android项目的程序测试和版本管理方法

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

1208道Java面试题(2023突击版),覆盖互联网大厂核心知识点

Java 面试八股文有必要背吗? 我的回答是:很有必要。你可以讨厌这种模式,但你一定要去背,因为不背你就进不了大厂。现如今,Java 面试的本质就是八股文,把八股文面试题背好,面试才有可能表现好。…

需求分析引言:架构漫谈(三)可用性专题

前文介绍了非功能性需求的各个指标和一些业界的标准。 非功能性需求里有一项可靠性,与之关联的一个指标叫可用性 本文对非功能性需求里的可用性、可靠性,进行一些详细的说明。 概念 我们在网上的云服务商处,经常看到产品介绍里会有这种字样…

Redis【实战篇】---- 分布式锁-redission

Redis【实战篇】---- 分布式锁-redission 1. 分布式锁-redission功能介绍2. 分布式锁-redission快捷入门3. 分布式锁-redission可重入锁原理4. 分布式锁-redission锁重试和WatchDog机制5. 分布式锁-redission锁的MutiLock原理 1. 分布式锁-redission功能介绍 基于setnx实现的分…

【AcWing算法基础课】第一章 基础算法(部分待更)

文章目录 前言课前温习一、快速排序核心模板1.1题目描述1.2思路分析1.3代码实现 二、归并排序核心模板2.1题目描述2.2思路分析2.3代码实现 三、二分查找整数二分题目一3.1题目描述3.2思路分析3.3代码实现 浮点数二分题目二3.1题目描述3.2思路分析3.3代码实现 四、高精度加法核心…

SpringBoot实战(十八)集成Feign

目录 一、简介1.定义2.关键特征 二、Maven依赖三、编写代码1.DemoController.java2.DemoFeignClient.java3.启动类注解 EnableFeignClients 四、测试 一、简介 1.定义 OpenFeign:是由 Netflix 开发的声明式的 Web 服务客户端。它简化了向 RESTful Web 服务发送 HT…

python接口自动化(八)--发送post请求的接口(详解)

简介 上篇介绍完发送get请求的接口,大家必然联想到发送post请求的接口也不会太难,被聪明的你又猜到了。答案是对的,虽然发送post请求的参考例子很简单,但是实际遇到的情况却是很复杂的,因为所有系统或者软件、网站都是…

HOT31-K个一组翻转链表

leetcode原题链接:K个一组翻转链表 题目描述 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余…

html实现酷炫好看的个人介绍主页(附源码)

文章目录 1.设计来源1.1 主界面1.2 我的简介界面1.3 教育经历界面1.4 我的源码界面1.5 我的相册界面1.6 朋友评价界面1.7 热门文章界面1.8 联系我界面 2.效果和源码2.1 动态效果2.2 源代码2.3 代码目录 源码下载 作者:xcLeigh 文章地址:https://blog.csd…

vue3使用高德地图实现点击获取经纬度以及搜索功能

话不多说直接上干活 在此之前你需要有高德地图的 key&#xff0c;这个自己去申请即可 1&#xff0c;首先需要在终端安装 npm i amap/amap-jsapi-loader --save 2&#xff0c;准备一个容器 <template><div id"container"></div> </templat…

Python 识别拼图验证码

需要识别的某易易盾验证码如下: 识别过程也是非常简单,使用现成的拼图库就行,本文记录一下使用心得(其实也没啥心得,开箱即用,太简单了): 首先,下载gaps拼图库 Install requirements: $ pip install -r requirements.txt $ sudo apt-get install python-tkInstall …

爱奇艺数据湖实战-广告数据湖应用

01 背景 广告数据主要包括效果、品牌和ADX等广告形式的请求和投放链路中产出的一系列日志&#xff0c;经过处理后&#xff0c;用于算法模型训练、广告运营分析、广告投放决策等场景。广告业务对数据的时效性、准确性以及查询性能要求较高。目前&#xff0c;广告数据链路整体采用…

【C语言扫雷的显微镜级别讲述】

C语言扫雷的显微镜级别讲述 分析 很久之前写过这个 现在做一个详细复述从源头出发 首先我们想写扫雷 最基本的框架 1&#xff08;外部&#xff09;.这个游戏可以玩完之后再玩一次 2.&#xff08;内部&#xff09;首先是要创建一个游戏场地 3.&#xff08;内部&#xff09; 电…

Set 集合

1:特点 无序&#xff1a;存取顺序不一致不重复&#xff1a;可以去除重复无索引&#xff1a;不能使用普通for循环遍历&#xff0c;也不能通过索引来获取元素 2&#xff1a;实现类特点 HashSet&#xff1a; 无序&#xff0c;不重复&#xff0c;无索引LinkedHashSet&#xff1a…

Python3 实例(三) | 菜鸟教程(二十一)

目录 一、Python 二分查找 二、Python 线性查找 三、Python 插入排序 四、Python 快速排序 五、Python 选择排序 六、Python 冒泡排序 七、Python 归并排序 一、Python 二分查找 &#xff08;一&#xff09;二分搜索是一种在有序数组中查找某一特定元素的搜索算法。 &a…

手写map

目录 背景过程简介手写HashMap4、put方法5、get方法5、remove方法 总结 背景 让我们来了解一下HashMap吧 过程 简介 HashMap是Java中一中非常常用的数据结构&#xff0c;也基本是面试中的“必考题”。它实现了基于“K-V”形式的键值对的高效存取。JDK1.7之前&#xff0c;Ha…

Docker容器的tomcat安装后访问报404页面的解决办法

上次我们创建的tomcat容器访问的时候是404页面,是因为高版本的并没有把默认的页面放到webapps目录下,这时,就需要我们登录创建的tomcat容器了 登录tomcat容器: docker exec -it my_tomcat /bin/bash 查看当前目录: ls 将webapp.dist下的默认页面复制到webapps目录下: cp …

unity3d:YooAsset零冗余构建Assetbundle代码分析

BuildAssetInfo构建asset信息 1.每个收集器下asset会构建出BuildAssetInfo&#xff0c;这种asset是没有冗余&#xff0c;只有依赖列表 2.每个依赖asset会构建出BuildAssetInfo&#xff0c;会记录将要打入的bundle列表 依赖的Asset列表 这个asset依赖的其他asset列表&#xf…

Tree 树结构

Case 1st 最少的摄像头——亚马逊面试问题 给定一个二叉树&#xff0c;我们在树的节点上安装摄像头。 节点上的每个摄像机都可以监视其父级、自身及其直接子级。 计算监视树的所有节点所需的最小摄像机数。 例&#xff1a; Input: [0,0,null,0,0]Output: 1Explanation: One cam…