Files
OxyPlot/Source/Examples/ExampleLibrary/Annotations/LineAnnotationExamples.cs
2023-09-02 09:24:59 +02:00

189 lines
9.9 KiB
C#

// --------------------------------------------------------------------------------------------------------------------
// <copyright file="LineAnnotationExamples.cs" company="OxyPlot">
// Copyright (c) 2014 OxyPlot contributors
// </copyright>
// --------------------------------------------------------------------------------------------------------------------
namespace ExampleLibrary
{
using OxyPlot;
using OxyPlot.Annotations;
using OxyPlot.Axes;
[Examples("LineAnnotation"), Tags("Annotations")]
public static class LineAnnotationExamples
{
[Example("LineAnnotation on linear axes")]
public static PlotModel LineAnnotationOnLinearAxes()
{
var model = new PlotModel { Title = "LineAnnotation on linear axes" };
model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = -20, Maximum = 80 });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = -10, Maximum = 10 });
model.Annotations.Add(
new LineAnnotation
{
Slope = 0.1,
Intercept = 1,
Text = "First",
BorderBackground = OxyColors.White.ChangeOpacity(0.75),
BorderPadding = new OxyThickness(5)
});
model.Annotations.Add(
new LineAnnotation
{
Slope = 0.3,
Intercept = 2,
MaximumX = 40,
Color = OxyColors.Red,
Text = "Second",
BorderBackground = OxyColors.White.ChangeOpacity(0.75),
BorderPadding = new OxyThickness(5)
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Vertical,
X = 4,
MaximumY = 10,
Color = OxyColors.Green,
Text = "Vertical",
BorderBackground = OxyColors.White.ChangeOpacity(0.75),
BorderPadding = new OxyThickness(5)
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Horizontal,
Y = 2,
MaximumX = 4,
Color = OxyColors.Gold,
Text = "Horizontal",
BorderBackground = OxyColors.White.ChangeOpacity(0.75),
BorderPadding = new OxyThickness(5)
});
return model;
}
[Example("LineAnnotation on logarithmic axes")]
public static PlotModel LineAnnotationOnLogarithmicAxes()
{
var model = new PlotModel { Title = "LineAnnotation on logarithmic axes" };
model.Axes.Add(new LogarithmicAxis { Position = AxisPosition.Bottom, Minimum = 1, Maximum = 80 });
model.Axes.Add(new LogarithmicAxis { Position = AxisPosition.Left, Minimum = 1, Maximum = 10 });
model.Annotations.Add(new LineAnnotation { Slope = 0.1, Intercept = 1, Text = "First", TextMargin = 40 });
model.Annotations.Add(
new LineAnnotation { Slope = 0.3, Intercept = 2, MaximumX = 40, Color = OxyColors.Red, Text = "Second" });
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Vertical,
X = 4,
MaximumY = 10,
Color = OxyColors.Green,
Text = "Vertical"
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Horizontal,
Y = 2,
MaximumX = 4,
Color = OxyColors.Gold,
Text = "Horizontal"
});
return model;
}
[Example("LineAnnotation with text orientation specified")]
public static PlotModel LineAnnotationOnLinearAxesWithTextOrientation()
{
var model = new PlotModel { Title = "LineAnnotations", Subtitle = "with TextOrientation specified" };
model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = -20, Maximum = 80 });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = -10, Maximum = 10 });
model.Annotations.Add(
new LineAnnotation
{
Slope = 0.1,
Intercept = 1,
Text = "Horizontal",
TextOrientation = AnnotationTextOrientation.Horizontal,
TextVerticalAlignment = VerticalAlignment.Bottom
});
model.Annotations.Add(
new LineAnnotation
{
Slope = 0.3,
Intercept = 2,
MaximumX = 40,
Color = OxyColors.Red,
Text = "Vertical",
TextOrientation = AnnotationTextOrientation.Vertical
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Vertical,
X = 4,
MaximumY = 10,
Color = OxyColors.Green,
Text = "Horizontal (x=4)",
TextPadding = 8,
TextOrientation = AnnotationTextOrientation.Horizontal
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Vertical,
X = 45,
MaximumY = 10,
Color = OxyColors.Green,
Text = "Horizontal (x=45)",
TextHorizontalAlignment = HorizontalAlignment.Left,
TextPadding = 8,
TextOrientation = AnnotationTextOrientation.Horizontal
});
model.Annotations.Add(
new LineAnnotation
{
Type = LineAnnotationType.Horizontal,
Y = 2,
MaximumX = 4,
Color = OxyColors.Gold,
Text = "Horizontal",
TextLinePosition = 0.5,
TextOrientation = AnnotationTextOrientation.Horizontal
});
return model;
}
[Example("LineAnnotation - ClipByAxis property")]
public static PlotModel LinearAxesMultipleAxes()
{
var model = new PlotModel { Title = "ClipByAxis property", Subtitle = "This property specifies if the annotation should be clipped by the current axes or by the full plot area." };
model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = -20, Maximum = 80, StartPosition = 0, EndPosition = 0.45, TextColor = OxyColors.Red });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = -10, Maximum = 10, StartPosition = 0, EndPosition = 0.45, TextColor = OxyColors.Green });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = -20, Maximum = 80, StartPosition = 0.55, EndPosition = 1, TextColor = OxyColors.Blue });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = -10, Maximum = 10, StartPosition = 0.55, EndPosition = 1, TextColor = OxyColors.Orange });
model.Annotations.Add(new LineAnnotation { ClipByYAxis = true, Type = LineAnnotationType.Vertical, X = 0, Color = OxyColors.Green, Text = "Vertical, ClipByAxis = true" });
model.Annotations.Add(new LineAnnotation { ClipByYAxis = false, Type = LineAnnotationType.Vertical, X = 20, Color = OxyColors.Green, Text = "Vertical, ClipByAxis = false" });
model.Annotations.Add(new LineAnnotation { ClipByXAxis = true, Type = LineAnnotationType.Horizontal, Y = 2, Color = OxyColors.Gold, Text = "Horizontal, ClipByAxis = true" });
model.Annotations.Add(new LineAnnotation { ClipByXAxis = false, Type = LineAnnotationType.Horizontal, Y = 8, Color = OxyColors.Gold, Text = "Horizontal, ClipByAxis = false" });
return model;
}
[Example("LineAnnotation on reversed axes")]
public static PlotModel ReversedAxes()
{
var model = new PlotModel { Title = "LineAnnotation on reversed axes" };
model.Axes.Add(new LinearAxis { Position = AxisPosition.Bottom, Minimum = -20, Maximum = 80, StartPosition = 1, EndPosition = 0 });
model.Axes.Add(new LinearAxis { Position = AxisPosition.Left, Minimum = -10, Maximum = 10, StartPosition = 1, EndPosition = 0 });
model.Annotations.Add(new LineAnnotation { Slope = 0.1, Intercept = 1, Text = "First", TextHorizontalAlignment = HorizontalAlignment.Left });
model.Annotations.Add(new LineAnnotation { Slope = 0.3, Intercept = 2, MaximumX = 40, Color = OxyColors.Red, Text = "Second", TextHorizontalAlignment = HorizontalAlignment.Left, TextVerticalAlignment = VerticalAlignment.Bottom });
model.Annotations.Add(new LineAnnotation { Type = LineAnnotationType.Vertical, X = 4, MaximumY = 10, Color = OxyColors.Green, Text = "Vertical", TextHorizontalAlignment = HorizontalAlignment.Right });
model.Annotations.Add(new LineAnnotation { Type = LineAnnotationType.Horizontal, Y = 2, MaximumX = 4, Color = OxyColors.Gold, Text = "Horizontal", TextHorizontalAlignment = HorizontalAlignment.Left });
return model;
}
}
}