diff --git a/Terminal.Gui/Views/GraphView/GraphView.cs b/Terminal.Gui/Views/GraphView/GraphView.cs
index c0c01ef13..24961516d 100644
--- a/Terminal.Gui/Views/GraphView/GraphView.cs
+++ b/Terminal.Gui/Views/GraphView/GraphView.cs
@@ -2,7 +2,7 @@
namespace Terminal.Gui;
/// View for rendering graphs (bar, scatter, etc...).
-public class GraphView : View
+public class GraphView : View, IDesignable
{
/// Creates a new graph with a 1 to 1 graph space with absolute layout.
public GraphView ()
@@ -346,4 +346,48 @@ public class GraphView : View
/// otherwise.
///
public void SetDriverColorToGraphColor () { Driver?.SetAttribute (GraphColor ?? GetNormalColor ()); }
+
+ bool IDesignable.EnableForDesign ()
+ {
+ Title = "Sine Wave";
+
+ var points = new ScatterSeries ();
+ var line = new PathAnnotation ();
+
+ // Draw line first so it does not draw over top of points or axis labels
+ line.BeforeSeries = true;
+
+ // Generate line graph with 2,000 points
+ for (float x = -500; x < 500; x += 0.5f)
+ {
+ points.Points.Add (new (x, (float)Math.Sin (x)));
+ line.Points.Add (new (x, (float)Math.Sin (x)));
+ }
+
+ Series.Add (points);
+ Annotations.Add (line);
+
+ // How much graph space each cell of the console depicts
+ CellSize = new (0.1f, 0.1f);
+
+ // leave space for axis labels
+ MarginBottom = 2;
+ MarginLeft = 3;
+
+ // One axis tick/label per
+ AxisX.Increment = 0.5f;
+ AxisX.ShowLabelsEvery = 2;
+ AxisX.Text = "X →";
+ AxisX.LabelGetter = v => v.Value.ToString ("N2");
+
+ AxisY.Increment = 0.2f;
+ AxisY.ShowLabelsEvery = 2;
+ AxisY.Text = "↑Y";
+ AxisY.LabelGetter = v => v.Value.ToString ("N2");
+
+ ScrollOffset = new (-2.5f, -1);
+
+ return true;
+ }
+
}