/
oxyplot.linq
53 lines (42 loc) · 1.67 KB
/
oxyplot.linq
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<Query Kind="Program">
<Reference><RuntimeDirectory>\WPF\PresentationCore.dll</Reference>
<Reference><RuntimeDirectory>\WPF\PresentationFramework.dll</Reference>
<Reference><RuntimeDirectory>\WPF\WindowsBase.dll</Reference>
<NuGetReference Prerelease="true">OxyPlot.Wpf</NuGetReference>
<Namespace>OxyPlot</Namespace>
<Namespace>OxyPlot.Series</Namespace>
<Namespace>System.Windows</Namespace>
<Namespace>OxyPlot.Wpf</Namespace>
<Namespace>OxyPlot.Axes</Namespace>
</Query>
void Main()
{
var pm = new PlotModel();
//Start point of the data (arbitrary in this example)
var startOfData = DateTime.Now.Subtract(TimeSpan.FromDays(1));
//https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx
var formatString = "m.ss.fffff";
Func<double, string> labelFormatter =
milliseconds =>
startOfData
.Add(TimeSpan.FromMilliseconds(milliseconds))
.ToString(formatString);
pm.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = AxisPosition.Left });
pm.Axes.Add(new OxyPlot.Axes.LinearAxis { Position = AxisPosition.Bottom, LabelFormatter = labelFormatter });
Random random = new Random(Guid.NewGuid().GetHashCode());
var datapoints =
Enumerable.Range(1, 100)
.Select(milliseconds => new DataPoint(milliseconds, random.Next(0, 10)));
var lineSeries = new OxyPlot.Series.LineSeries();
lineSeries.Points.AddRange(datapoints);
pm.Series.Add(lineSeries);
Show(pm);
}
public void Show(PlotModel model, double width = 800, double height = 500)
{
var w = new Window() { Title = "OxyPlot.Wpf.Plot : " + model.Title, Width = width, Height = height };
var plot = new PlotView();
plot.Model = model;
w.Content = plot;
w.Show();
}