diff --git a/src/View/Results/CustomPlot/CustomPlotValuesSelectionDialog.py b/src/View/Results/CustomPlot/CustomPlotValuesSelectionDialog.py
new file mode 100644
index 0000000000000000000000000000000000000000..d2e3a3e82c25efdf0f5d8848aa22d23dbbdbd6db
--- /dev/null
+++ b/src/View/Results/CustomPlot/CustomPlotValuesSelectionDialog.py
@@ -0,0 +1,87 @@
+# CustomPlotValueSelectionDialog.py -- Pamhyr
+# Copyright (C) 2023  INRAE
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+# -*- coding: utf-8 -*-
+
+from View.Tools.PamhyrWindow import PamhyrDialog
+
+from PyQt5.QtWidgets import (
+    QRadioButton, QCheckBox, QVBoxLayout,
+)
+
+class CustomPlotValuesSelectionDialog(PamhyrDialog):
+    _pamhyr_ui = "CustomPlotValuesSelectionDialog"
+    _pamhyr_name = "Custom Plot Selection"
+
+    def __init__(self, parent=None):
+        super(CustomPlotValuesSelectionDialog, self).__init__(
+            title=self._pamhyr_name,
+            options=[],
+            parent=parent
+        )
+
+        self._available_values_x = ['foo', 'bar']
+        self._available_values_y = ['bar', 'baz']
+
+        self.setup_radio_buttons()
+        self.setup_check_boxs()
+
+        self.value = None
+
+    def setup_radio_buttons(self):
+        self._radio = []
+        layout = self.find(QVBoxLayout, "verticalLayout_x")
+
+        for value in self._available_values_x:
+            btn = QRadioButton(value, parent=self)
+            self._radio.append(btn)
+            layout.addWidget(btn)
+
+        self._radio[0].setChecked(True)
+        layout.addStretch()
+
+    def setup_check_boxs(self):
+        self._check = []
+        layout = self.find(QVBoxLayout, "verticalLayout_y")
+
+        for value in self._available_values_y:
+            btn = QCheckBox(value, parent=self)
+            self._check.append(btn)
+            layout.addWidget(btn)
+
+        self._check[0].setChecked(True)
+        layout.addStretch()
+
+    def accept(self):
+        x = next(
+            filter(
+                lambda r: r.isChecked(),
+                self._radio
+            )
+        ).text()
+
+        y = list(
+            map(
+                lambda b: b.text(),
+                filter(
+                    lambda b: b.isChecked(),
+                    self._check
+                )
+            )
+        )
+
+        self.value = x, y
+        super().accept()
diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py
index 15167fd351a05463882ab26a8d54a76418c6b566..353a036c584f6e17e634c17b3d95f8d891cd1451 100644
--- a/src/View/Results/Window.py
+++ b/src/View/Results/Window.py
@@ -51,6 +51,10 @@ from View.Results.PlotH import PlotH
 from View.Results.PlotSedReach import PlotSedReach
 from View.Results.PlotSedProfile import PlotSedProfile
 
+from View.Results.CustomPlot.CustomPlotValuesSelectionDialog import (
+    CustomPlotValuesSelectionDialog,
+)
+
 from View.Results.Table import TableModel
 from View.Results.translate import ResultsTranslate
 from View.Stricklers.Window import StricklersWindow
@@ -272,6 +276,17 @@ class ResultsWindow(PamhyrWindow):
         self._status_label.setText(txt)
 
     def setup_connections(self):
+        # Action
+        actions = {
+            "action_add": self._add_custom_plot
+        }
+
+        for action in actions:
+            self.find(QAction, action).triggered.connect(
+                actions[action]
+            )
+
+        # Table and Plot
         fun = {
             "reach": self._set_current_reach,
             "profile": self._set_current_profile,
@@ -390,6 +405,12 @@ class ResultsWindow(PamhyrWindow):
         timestamp = self._timestamps[self._slider_time.value()]
         self.update(timestamp=timestamp)
 
+    def _add_custom_plot(self):
+        dlg = CustomPlotValuesSelectionDialog(parent=self)
+        if dlg.exec():
+            value = dlg.value
+            logger.info(value)
+
     def _copy(self):
         logger.info("TODO: copy")
 
diff --git a/src/View/ui/CustomPlotValuesSelectionDialog.ui b/src/View/ui/CustomPlotValuesSelectionDialog.ui
new file mode 100644
index 0000000000000000000000000000000000000000..88ca363caf69660b6a17b4b88797b54e7f826ff2
--- /dev/null
+++ b/src/View/ui/CustomPlotValuesSelectionDialog.ui
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Dialog</class>
+ <widget class="QDialog" name="Dialog">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>414</width>
+    <height>482</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QSplitter" name="splitter">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <widget class="QWidget" name="verticalLayoutWidget">
+      <layout class="QVBoxLayout" name="verticalLayout_x">
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>X axis:</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="verticalLayoutWidget_2">
+      <layout class="QVBoxLayout" name="verticalLayout_y">
+       <item>
+        <widget class="QLabel" name="label_2">
+         <property name="text">
+          <string>Y axis:</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+   <item row="1" column="0">
+    <widget class="QDialogButtonBox" name="buttonBox">
+     <property name="orientation">
+      <enum>Qt::Horizontal</enum>
+     </property>
+     <property name="standardButtons">
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>accepted()</signal>
+   <receiver>Dialog</receiver>
+   <slot>accept()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>248</x>
+     <y>254</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>157</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>buttonBox</sender>
+   <signal>rejected()</signal>
+   <receiver>Dialog</receiver>
+   <slot>reject()</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>316</x>
+     <y>260</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>286</x>
+     <y>274</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
+</ui>
diff --git a/src/View/ui/Results.ui b/src/View/ui/Results.ui
index 5b7977242bbdeaec70fa2548687695f6ad45e888..089208218875915916a2898930709f67173bce66 100644
--- a/src/View/ui/Results.ui
+++ b/src/View/ui/Results.ui
@@ -140,6 +140,30 @@
    </property>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
+  <widget class="QToolBar" name="toolBar">
+   <property name="windowTitle">
+    <string>toolBar</string>
+   </property>
+   <attribute name="toolBarArea">
+    <enum>TopToolBarArea</enum>
+   </attribute>
+   <attribute name="toolBarBreak">
+    <bool>false</bool>
+   </attribute>
+   <addaction name="action_add"/>
+  </widget>
+  <action name="action_add">
+   <property name="icon">
+    <iconset>
+     <normaloff>ressources/gtk-add.png</normaloff>ressources/gtk-add.png</iconset>
+   </property>
+   <property name="text">
+    <string>Add</string>
+   </property>
+   <property name="toolTip">
+    <string>Add custom visualization</string>
+   </property>
+  </action>
  </widget>
  <resources/>
  <connections/>