用matplotlib绘制好看的图表
虽然可能我说的“好看”不是好看,但这是一个方法。
这是图1,如何实现几个重点部位?
箭头的实现需要axis artist:
import matplotlib.pyplot as plt
import mpl_toolkits.axisartist as axisartist
不妨将图片长宽比设置为10:8,将保存的图片分辨率设置为256.
graph_size = (10, 8)
setDpi=256
fig = plt.figure(figsize=graph_size)
ax = axisartist.Subplot(fig, 1, 1, 1)
实现箭头:
fig.add_axes(ax)
ax.axis[:].set_visible(False)
ax.axis["x"] = ax.new_floating_axis(0, 0)
ax.axis["y"] = ax.new_floating_axis(1, 0)
ax.axis["x"].set_axisline_style("->")
ax.axis["y"].set_axisline_style("->")
实现刻度大小、标签文本大小:20
ax.axis["x"].major_ticklabels.set_size(20)
ax.axis["x"].label.set_size(20)
ax.axis["y"].major_ticklabels.set_size(20)
ax.axis["y"].label.set_size(20)
设置标签:
ax.axis["x"].label.set_text("Iteration")
ax.axis["y"].label.set_text("loss")
y轴刻度方向:
ax.axis["y"].set_axis_direction('left')
这是刻度标签文本,"":
ax.annotate(text='', xy=(1, 0), xytext=(0, 0))
ax.annotate(text='', xy=(0, 1), xytext=(0, 0))
绘制内容
plt.plot(x1, y1[start:], color="b")
plt.plot(x1, y2[start:], "-.", color="orange")
线条标注
plt.legend(["val loss", "train loss"], prop={"size": 20})
其他
plt.savefig("LossGraph.png", dpi=setDpi, bbox_inches="tight", pad_inches=0.2)
plt.show()
plt.close()