目录
plt.show()之后不显示图片的问题
画loss曲线教程
1. 如果系统为windows等系统,那就看别的教程吧(因为我没有遇到过这类问题),比如:
(26条消息) python之matplotlib中plt.show()不显示图的解决办法_Lovefeifei20200119的博客-CSDN博客_plt.show()https://blog.csdn.net/qq_28019591/article/details/89404773
2. 对于Linux系统,plt.show()无法显示图片是非常正常的,因为Linux系统本来就没有图形界面。即使在windows系统上,只要VScode/PyCharm等编辑器远程连接的是Linux服务器,就无法显示。
那么要怎样看到图片呢?很简单,把图片保存下来,再查看。
import matplotlib.pyplot as plt
plt.savefig('zz.png') # 引号里是保存的路径(像此处示例就是相对路径,保存在当前文件夹)
然后就可以在保存的路径下找到图片,用编辑器查看啦!
3. 还有一个较为复杂的方法就是,VScode+Xshell+图形界面软件(如XManager等)联动,用echo $DISPLAY配置环境变量......有兴趣的可以尝试,小白博主觉得,还是savefig吧,省事。
小白博主在这里提供一种最简单的画loss曲线的方法。
1. 首先收集数据——包括横坐标(iters)和纵坐标(loss)。
最简单的方法就是新建一个.txt文件,将iters和loss写进去,以空格分开,如下图所示(第一列是VScode显示的行数,不是自己写的)。
2. 读取数据并画图。
import numpy as np
import matplotlib.pyplot as plt
# np.loadtxt可以直接加载.txt文件中的数据(这里画了两个图,所以加载了两个.txt)
data1_loss = np.loadtxt("zhuhai/loss.txt", dtype=float, delimiter=' ') # 第1个参数是文件路径,第2个读取的数据类型,第3个参数是分隔标志(这里示例以空格为标志分隔)
data2_loss = np.loadtxt("zhuhai_SE/lossSE.txt", dtype=float, delimiter=' ')
# 读取横纵坐标
x1 = data1_loss[:,0] # 横坐标为所有行的第0列
y1 = data1_loss[:,1] # 纵坐标为所有行的第1列
x2 = data2_loss[:,0]
y2 = data2_loss[:,1]
# 画图
plt.plot(x1, y1,'r-', label = u'woSE-total_loss') # 横坐标,纵坐标,颜色,标签(图例)
plt.plot(x2,y2, 'b-', label = u'SE-total_loss')
plt.title('Compare loss for different structure in training') # 图名称
plt.legend() # 图例的位置,可以有参数,无参数的话默认右上角
plt.xlabel(u'iters') # 横轴名称
plt.ylabel(u'loss') # 纵轴名称
plt.savefig('zz_1&2.png') # 保存图片
画完图就可以查看保存的图片了。注意,多条曲线画在同一个图上时,画图的先后顺序会影响观看效果,后画的曲线会遮挡先画的曲线。