目录
全局定义:
import visdom
import numpy as np
viz = visdom.Visdom(env="line test")
1、以list方式实现折线图
def line_test1():
import visdom
viz = visdom.Visdom(env="line test1")
viz.line(
X=[1, 2, 3, 4], # x坐标
Y=[1, 4, 9, 16], # y值
win="line1", # 窗口id
name="test line", # 线条名称
update='append', # 以添加方式加入
opts={
'showlegend': True, # 显示网格
'title': "Demo line in Visdom",
'xlabel': "x1", # x轴标签
'ylabel': "y1", # y轴标签
},
)
结果:
注意:append方式添加数据会被保存在session中,要删除之前append的数据,使用vis.close()关闭后,再打开即清楚。
2、独立画两条曲线
def line_test2():
import visdom
viz = visdom.Visdom(env="line test1")
# Example for Latex Support
viz.line(
X=[1, 2, 3, 4], # x坐标
Y=[1, 4, 9, 16], # y值
win="line1", # 窗口id
name="test line1", # 线条名称
update=None, # 已添加方式加入
opts={
'showlegend': True, # 显示网格
'title': "Demo line in Visdom",
'xlabel': "x1", # x轴标签
'ylabel': "y1", # y轴标签
},
)
viz.line(
X=[1, 2, 3, 4],
Y=[0.5, 2, 4.5, 8],
win="line1",
name="test line2",
update='append',
)
结果:
3、x值缺省
viz.line(Y=np.random.rand(10),
opts=dict(showlegend=True))
结果:
4、同时画多条线
name = ['y=x^2', 'y=kx+b']
X = np.linspace(-5, 5, 100) # (100,)
viz.line(
Y=np.column_stack((X * X, np.sqrt(X + 5))), # (100, 2)
X=np.column_stack((X, X)), # (100, 2)
opts=dict(markers=False, legend=name),
)
结果:
5、曲线添加删除修改
1)画直线
win = viz.line(
X=np.column_stack((np.arange(0, 10), np.arange(0, 10))), # (10, 2)
Y=np.column_stack((np.linspace(5, 10, 10),
np.linspace(5, 10, 10) + 5)), # (10, 2)
)
结果:
2)添加
viz.line(
X=np.column_stack((np.arange(10, 20), np.arange(10, 20))),
Y=np.column_stack((np.linspace(5, 10, 10),
np.linspace(5, 10, 10) + 5)),
win=win,
update='append'
)
结果:
3)单值添加,添加时以name区分是哪条线
viz.line(
X=np.arange(21, 30),
Y=np.arange(1, 10),
win=win,
name='2', # 默认名字1,2,3...
update='append'
)
viz.line(
X=np.arange(1, 10),
Y=np.arange(11, 20),
win=win,
name='delete this', # 新加
update='append'
)
结果:
4)完全重叠曲线,用insert
viz.line(
X=np.arange(1, 10),
Y=np.arange(11, 20),
win=win,
name='4',
update='insert'
)
结果:
5)删除指定曲线
name为线唯一标识,update指定为remove方式。
viz.line(X=None, Y=None, win=win, name='delete this', update='remove')
结果:
5、设置线性和颜色
1)画三条线
win = viz.line(
X=np.column_stack((
np.arange(0, 10),
np.arange(0, 10),
np.arange(0, 10),
)),
Y=np.column_stack((
np.linspace(5, 10, 10),
np.linspace(5, 10, 10) + 5,
np.linspace(5, 10, 10) + 10,
)),
opts={
'dash': np.array(['solid', 'dash', 'dashdot']),
'linecolor': np.array([
[0, 191, 255],
[0, 191, 255],
[255, 0, 0],
]),
'title': 'Different line dash types'
}
)
结果:
2)添加单条曲线
viz.line(
X=np.arange(0, 10),
Y=np.linspace(5, 10, 10) + 15,
win=win,
name='4',
update='insert',
opts={
'linecolor': np.array([
[255, 0, 0],
]),
'dash': np.array(['dot']),
}
)
结果:
6、设置下阴影效果
X = np.linspace(0, 4, 200)
win = viz.line(
Y=np.column_stack((np.sqrt(X), np.sqrt(X) + 2)), # (200, 2)
X=np.column_stack((X, X)), # (200, 2)
opts=dict(
fillarea=True,
showlegend=False,
width=800,
height=800,
xlabel='Time',
ylabel='Volume',
ytype='log',
title='Stacked area plot',
marginleft=30,
marginright=30,
marginbottom=80,
margintop=30,
),
)
# 调整画布大小
# Assure that the stacked area plot isn't giant
viz.update_window_opts(
win=win,
opts=dict(
width=300,
height=300,
),
)
结果:
参考:
https://github.com/fossasia/visdom/blob/master/example/demo.py
visdom可视化系列文章目录:
2、visdom文件下载慢问题处理 downloading scripts, this may take a little while