内容描述
Matplotlib绘制折线图,多张图片放在一张画布上
代码
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import math
order = ['Loss', 'RMSE', 'MSE', 'MAE', 'MRE', 'R2']
# 创造数据
data_list = []
for i in range(100):
data_list.append([math.sin(i), math.cos(i), math.cosh(i), math.sinh(i), math.tan(i), i])
data_list = np.array(data_list)
# 总共取50条数据绘图
total_plot_num = 50
step = int(data_list.shape[0] / total_plot_num)
data_list_plot = data_list[0:data_list.shape[0] + 1:(step if step != 0 else 1), :]
# 二横三竖绘图
h, v = 2, 3
fig = plt.figure(figsize=(35, 20))
gs = gridspec.GridSpec(h, v)
gs.update(wspace=0.1, hspace=0.1)
index = 0
for i in range(h):
for j in range(v):
if order[index] != 'R2':
ax = fig.add_subplot(gs[i, j])
ax.plot(data_list_plot[:, index])
ax.legend([order[index]])
else:
ax = fig.add_subplot(gs[i, j])
ax.plot(data_list_plot[:, index])
ax.set_ylim(-1, 1)
ax.legend([order[index]])
index += 1
plt.show()