【Python数据处理】批量导出深度学习网络训练生成的event格式文件中的数据到同一excel表的不同sheet
【Python数据处理】读取event文件导出的excel数据并作平滑处理(类似tensorboard的smoothing效果)
通过前面的两篇blog,我们已经获取到我们想要操作的数据,并且已经进行平滑处理,接下来要绘图。
笔者这里采用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中的效果。
再进一步,如果我们也想像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即可,附上效果图:
seaborn官方API介绍
Seaborn常见绘图总结
seaborn绘制各种图
seaborn绘图
使用seaborn绘制强化学习中的图片
其他绘图操作:
(实际上是想尝试绘制误差带图,seaborn中有相关的api,但是需要同一指标的多组实验数据来绘制。随后笔者又发现了高斯过程,实际上也可以根据当前数据利用高斯回归得到一组预测值,与当前值进行误差分析。无奈,demo虽然没有报错,但是运行中经常卡死,一定又是bug在捣鬼,等出差过后再仔细研究吧,先简单做下记录。)
GPR误差带图
高斯过程误差带图
matlab绘制误差带图
显示放大的部分曲线
matplotlib绘制误差线图
绘制LOWESS的置信区间