diff --git a/src/View/Results/CustomPlot/Plot.py b/src/View/Results/CustomPlot/Plot.py
index 384116cda126621df658d29e6441ced284d681ec..6c6f2ec83b8fd5a9b40709cc516b934fca2120cd 100644
--- a/src/View/Results/CustomPlot/Plot.py
+++ b/src/View/Results/CustomPlot/Plot.py
@@ -23,12 +23,14 @@ from functools import reduce
 from tools import timer
 from View.Tools.PamhyrPlot import PamhyrPlot
 
+from View.Results.CustomPlot.Translate import CustomPlotTranslate
+
 logger = logging.getLogger()
 
 unit = {
-    "elevation": "meter",
-    "water_elevation": "meter",
-    "discharge": "m3s",
+    "elevation": "0-meter",
+    "water_elevation": "0-meter",
+    "discharge": "1-m3s",
 }
 
 
@@ -38,7 +40,7 @@ class CustomPlot(PamhyrPlot):
                  toolbar=None, parent=None):
         super(CustomPlot, self).__init__(
             canvas=canvas,
-            trad=trad,
+            trad=CustomPlotTranslate(),
             data=data,
             toolbar=toolbar,
             parent=parent
@@ -57,10 +59,10 @@ class CustomPlot(PamhyrPlot):
             f"timestamp={timestamp}"
         )
 
-        self._y_axis = list(
+        self._y_axes = sorted(
             set(
                 map(
-                    lambda y: self._trad[y],
+                    lambda y: unit[y],
                     self._y
                 )
             )
@@ -78,26 +80,91 @@ class CustomPlot(PamhyrPlot):
             self._trad[self._x],
             color='green', fontsize=12
         )
+
         self.canvas.axes.set_ylabel(
-            self._trad[self._y_axis[0]],
+            self._trad[self._y_axes[0]],
             color='green', fontsize=12
         )
 
-        for axes in self._y_axis[1:]:
-            logger.info(axes)
-            ax_new = ax.twinx()
+        self._axes = {}
+        for axes in self._y_axes[1:]:
+            ax_new = self.canvas.axes.twinx()
             ax_new.set_ylabel(
                 self._trad[axes],
                 color='green', fontsize=12
             )
+            self._axes[axes] = ax_new
 
         if self._x is "kp":
+            results = self.data
+            reach = results.river.reach(self._reach)
+            kp = reach.geometry.get_kp()
+            z_min = reach.geometry.get_z_min()
+
+            self.canvas.axes.set_xlim(
+                left=min(kp), right=max(kp)
+            )
+
+            meter_axes = self.canvas.axes
+            m3S_axes = self.canvas.axes
+            if "0-meter" in self._y_axes and "1-m3s" in self._y_axes:
+                m3s_axes = self._axes["1-m3s"]
+
             if "elevation" in self._y:
-                logging.info("TODO: kp/elevation")
+                meter_axes.set_ylim(
+                    bottom=min(0, min(z_min)),
+                    top=max(z_min) + 1
+                )
+
+                meter_axes.plot(
+                    kp, z_min,
+                    color='grey', lw=1.
+                )
+
             if "water_elevation" in self._y:
-                logging.info("TODO: kp/water_elevation")
+                # Water elevation
+                water_z = list(
+                    map(
+                        lambda p: p.get_ts_key(self._timestamp, "Z"),
+                        reach.profiles
+                    )
+                )
+
+
+                meter_axes.set_ylim(
+                    bottom=min(0, min(z_min)),
+                    top=max(water_z) + 1
+                )
+
+                meter_axes.plot(
+                    kp, water_z, lw=1.,
+                    color='b',
+                )
+
+                if "elevation" in self._y:
+                    meter_axes.fill_between(
+                        kp, z_min, water_z,
+                        color='blue', alpha=0.5, interpolate=True
+                    )
+
             if "discharge" in self._y:
-                logging.info("TODO: kp/discharge")
+                q = list(
+                    map(
+                        lambda p: p.get_ts_key(self._timestamp, "Q"),
+                        reach.profiles
+                    )
+                )
+
+                m3s_axes.set_ylim(
+                    bottom=min(0, min(q)),
+                    top=max(q) + 1
+                )
+
+                m3s_axes.plot(
+                    kp, q, lw=1.,
+                    color='r',
+                )
+
         elif self._x is "time":
             if "elevation" in self._y:
                 logging.info("TODO: time/elevation")
diff --git a/src/View/Results/CustomPlot/Translate.py b/src/View/Results/CustomPlot/Translate.py
index aee28e0d7d69bcbf7abf35397a58b28cf380974e..555950cda5e61d262e4ca3493d5efe6540332b54 100644
--- a/src/View/Results/CustomPlot/Translate.py
+++ b/src/View/Results/CustomPlot/Translate.py
@@ -47,10 +47,10 @@ class CustomPlotTranslate(ResultsTranslate):
 
         # Unit corresponding long name (plot axes display)
 
-        self._dict['meter'] = _translate(
+        self._dict['0-meter'] = _translate(
             "CustomPlot", "Elevation (m)"
         )
-        self._dict['m3s'] = _translate(
+        self._dict['1-m3s'] = _translate(
             "CustomPlot", "Discharge (m³/s)"
         )
 
diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py
index bc6e05002dceb6a888a19d23a4e4e40294d66b0f..ca53d59d344082b703164170c491ba6c9ae4d894 100644
--- a/src/View/Results/Window.py
+++ b/src/View/Results/Window.py
@@ -467,7 +467,6 @@ class ResultsWindow(PamhyrWindow):
             data=self._results,
             canvas=canvas,
             toolbar=toolbar,
-            trad=self._trad,
             parent=self,
         )
         plot.draw()