【python绘图】seaborn可视化+鼠标滑动自动标注数据

【Python数据处理】批量导出深度学习网络训练生成的event格式文件中的数据到同一excel表的不同sheet
【Python数据处理】读取event文件导出的excel数据并作平滑处理(类似tensorboard的smoothing效果)

通过前面的两篇blog,我们已经获取到我们想要操作的数据,并且已经进行平滑处理,接下来要绘图。

seaborn绘图

笔者这里采用seaborn绘图,seaborn实际上是基于matplotlib封装好的一些高级api。

由于目前还在出差,没有太多时间去深究seaborn的一些函数细节,只是简单的拿来用了一下,后续有用到其他功能模块的时候再补充更新,下文会附一些seaborn的相关教程。

import seaborn as sns;sns.set()
newData = pd.DataFrame(columns=["step"])
    newData["step"] = stepdata.tolist()
    ax = sns.lineplot(x = "step",y="step",data = newData)
    plt.show()

seaborn绘图时接受的是一个Dataframe类型的数据格式,倘若不是该数据格式,可以先制作一个Dataframe。
newData = pd.DataFrame(columns=[“step”])
其实很简单,通过上述操作就可以新建一列数据,label名称为step,然后再通过newData[“step”] = stepdata.tolist()给该列添加数据即可。最后show一下就可以得到我们之前blog中的效果。

matplotlib随鼠标滑动自动标注

再进一步,如果我们也想像tensorboard当中那样可以通过移动鼠标实时的显示x、y轴的数据的话,可以参考下面的代码:

def Show(y):
	#参数y为一个list
	len_y = len(y)
	x = range(len_y)
	_y = [y[-1]]*len_y
	
	fig = plt.figure(figsize=(960/72,360/72))
	ax1 = fig.add_subplot(1,1,1)
	
	ax1.plot(x, y, color='blue')
	line_x = ax1.plot(x, _y, color='skyblue')[0]
	line_y = ax1.axvline(x=len_y-1, color='skyblue')
	
	ax1.set_title('aaa')
	#标签
	text0 = plt.text(len_y-1,y[-1],str(y[-1]),fontsize = 10)
	
	def scroll(event):
		axtemp=event.inaxes
		x_min, x_max = axtemp.get_xlim()
		fanwei_x = (x_max - x_min) / 10
		if event.button == 'up':
			axtemp.set(xlim=(x_min + fanwei_x, x_max - fanwei_x))
		elif event.button == 'down':
			axtemp.set(xlim=(x_min - fanwei_x, x_max + fanwei_x))
		fig.canvas.draw_idle() 
	#这个函数实时更新图片的显示内容
	def motion(event):
		try:
			temp = y[int(np.round(event.xdata))]
			for i in range(len_y):
				_y[i] = temp
			line_x.set_ydata(_y)
			line_y.set_xdata(event.xdata)
			######
			text0.set_position((event.xdata, temp))
			text0.set_text(str(temp))
			
			fig.canvas.draw_idle() # 绘图动作实时反映在图像上
		except:
			pass

	fig.canvas.mpl_connect('scroll_event', scroll)
	fig.canvas.mpl_connect('motion_notify_event', motion)
	
	plt.show()

该代码参考:python中matplotlib实现随鼠标滑动自动标注
输入参数为一个list即可,附上效果图:
【python绘图】seaborn可视化+鼠标滑动自动标注数据_第1张图片
seaborn官方API介绍
Seaborn常见绘图总结
seaborn绘制各种图
seaborn绘图
使用seaborn绘制强化学习中的图片
其他绘图操作:

(实际上是想尝试绘制误差带图,seaborn中有相关的api,但是需要同一指标的多组实验数据来绘制。随后笔者又发现了高斯过程,实际上也可以根据当前数据利用高斯回归得到一组预测值,与当前值进行误差分析。无奈,demo虽然没有报错,但是运行中经常卡死,一定又是bug在捣鬼,等出差过后再仔细研究吧,先简单做下记录。)

GPR误差带图
高斯过程误差带图
matlab绘制误差带图
显示放大的部分曲线
matplotlib绘制误差线图
绘制LOWESS的置信区间

你可能感兴趣的:(#,Python数据处理及绘图,python,seaborn,绘图)