2016-03-31 19 views
1

Şu anda verilerim her iki eksende de bir LineSeries'de görüntülenir. Her bir noktanın X değeri çok küçük bir zaman aralığıdır. Bu değeri özel bir şekilde göstermem gerekiyor. Mümkünse veriler için DateTimeAxis kullanmaktan kaçınmak isterim. LinearAxis'i özel bir şekilde biçimlendirebilir miyim?LinearAxis StringFormat?

cevap

1

Bu benim için işe yarıyor gibi görünüyor. Umarım burada bir şeyi yanlış yorumlamıyorum, cevap çok basittir.

//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); 

Örnek Kullanım: Burada

var pm = new PlotModel(); 
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); 

Komple çalışma linqpad komut https://github.com/kennethito/StackOverflowReferences/blob/master/Oxyplot-CustomAxis/oxyplot.linq

enter image description here

+0

Teşekkür Kenneth. Çözümünüzün işe yarayacağına inanıyorum, ancak henüz doğrulama şansım olmadı. Kısa bir süre (12-24 saat, Tanrıya razı olacak) ve güncelleyeceğim. – Daniel

İlgili konular