Может как то так? Если графики сильно перекрываются, вы можете добавить параметр alpha
.
import matplotlib.pyplot as plt
import numpy as np
true = np.array([1,2,3,4,5])
pred = np.array([3.1,4.1,5.1])
lower = np.array([2.9,3.9,4.9])
upper = np.array([3.2,4.2,5.2])
xs = range(1,6)
f, ax = plt.subplots()
ax.plot(xs[2:], lower, color='limegreen', marker='o', label='lower', lw=0.5, markersize=2)
ax.plot(xs[2:], pred, color='aqua', marker='o', label='pred', markersize=2)
ax.plot(xs[2:], upper, color='dodgerblue', marker='o', label='upper', lw=0.5, markersize=2)
ax.plot(xs, true, color='crimson', marker='o', label='true')
ax.fill_between(xs[2:], lower, upper, color='gold', alpha=0.3, label='region')
plt.legend()
plt.show()