 
 extension RewardSchedule {
   fileprivate func addVerticalAnnotations(on axes: PythonObject) {
-    // TODO: !!!!
-  }
-}
+    zip(x, rewardFunctions).forEach { (x, rewardFunction) in
+      axes.axvline(x: x, linestyle: "solid", linewidth: 1.0, color: "#222222", alpha: 0.5)
+      axes.text(
+        x: x + 0.01 * Float(axes.get_xlim()[1])!, y: 0.00,
+        s: rewardFunction
+          .split(separator: "∧")
+          .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
+          .joined(separator: "\n"),
+        color: "#222222", alpha: 0.5,
+        fontsize: 18, fontfamily: "DejaVu Sans", fontweight: 400)
+    }
+  }
+}


    // Create a new figure.
    let figure = plt.figure(figsize: [10.0, 6.0])
    let ax = plt.gca()

    // Plot the curves for all observation-network combinations.
    for observation in observations {

      }()
      for network in networks {
        // Read the results from all saved result files.
        let resultsDir = resultsDir
          .appendingPathComponent(observation.description)
          .appendingPathComponent(network.description)
        guard let resultFiles = try? FileManager.default.contentsOfDirectory(
