code: def plot_history(rmse_evals, rmsle_evals, py_rmsle_evals):
      fig, axs = plt.subplots(3, 1)
      ax0: matplotlib.axes.Axes = axs[0]
      ax1: matplotlib.axes.Axes = axs[1]
      ax2: matplotlib.axes.Axes = axs[2]
  
      x = np.arange(0, kBoostRound, 1)
  
      ax0.plot(x, rmse_evals["dtrain"]["rmse"], label="train-RMSE")
      ax0.plot(x, rmse_evals["dtest"]["rmse"], label="test-RMSE")
      ax0.legend()
  
      ax1.plot(
          x, rmsle_evals["dtrain"]["rmsle"], label="train-native-RMSLE"
      )
      ax1.plot(
          x, rmsle_evals["dtest"]["rmsle"], label="test-native-RMSLE"
      )
      ax1.legend()
  
      ax2.plot(
          x, py_rmsle_evals["dtrain"]["PyRMSLE"], label="train-PyRMSLE"
      )
      ax2.plot(
          x, py_rmsle_evals["dtest"]["PyRMSLE"], label="test-PyRMSLE"
      )
      ax2.legend()
  
file_path: xgboost/demo/guide-python/custom_rmsle.py
imports: import argparse
  from time import time
  from typing import Dict, List, Tuple
  import matplotlib
  import numpy
  from matplotlib import pyplot
  import xgboost
label_desc: Use image node_id 5 for calling a global function with example usage: plot_history(rmse_evals, rmsle_evals, py_rmsle_evals) without return types