는 연결리스트로 데이터를로드하고, 누락 된 데이터 포인트를 삽입 :
using System;
using System.Collections.Generic;
namespace Whatever
{
public struct DataPoint
{
private DateTime time;
private int value;
public DataPoint(DateTime time, int value)
{
this.time = time;
this.value = value;
}
public DateTime Time
{
get { return this.time; }
}
public int Value
{
get { return this.value; }
}
public override string ToString()
{
return string.Format("{0:D2}/{1}: {2}", this.time.Month, this.time.Year, this.value);
}
}
public static class Program
{
public static void Main()
{
// List of the datapoints, e.g. loaded from a database
var dataPoints = new List<DataPoint>();
dataPoints.Add(new DataPoint(new DateTime(2010, 11, 1), 10));
dataPoints.Add(new DataPoint(new DateTime(2011, 2, 1), 20));
dataPoints.Add(new DataPoint(new DateTime(2011, 3, 1), 30));
dataPoints.Add(new DataPoint(new DateTime(2011, 6, 1), 40));
dataPoints.Add(new DataPoint(new DateTime(2011, 9, 1), 50));
dataPoints.Add(new DataPoint(new DateTime(2011, 12, 1), 60));
dataPoints.Add(new DataPoint(new DateTime(2012, 2, 1), 70));
// Endpoints of the measurement interval
var begin = new DateTime(2010, 9, 1);
var end = new DateTime(2012, 4, 1);
// Check each month and insert missing datapoints
var time = begin;
var i = 0;
while (time <= end)
{
if (i < dataPoints.Count)
{
if (time < dataPoints[i].Time)
{
var dataPoint = new DataPoint(time, 0);
dataPoints.Insert(i, dataPoint);
}
}
else
{
var dataPoint = new DataPoint(time, 0);
dataPoints.Add(dataPoint);
}
++i;
time = time.AddMonths(1);
}
// Print list
foreach (var dataPoint in dataPoints)
Console.WriteLine(dataPoint);
}
}
}
편집 : 만이 데이터를 플롯해야하는 경우, 누락 된 데이터 포인트를 삽입 할 필요가 없습니다. 나는 단순히 기존의 점들 사이를 보간하기 만하면된다. 기존 점을 채워진 원으로 표시하면 누락 된 점을이 연결선에있는 빈 원으로 표시 할 수 있습니다 (이러한 그래프 컨트롤은 보간에 지정된 점을 저장하지 않고 작성할 수 있습니다).
출처
2011-11-12 22:25:44
kol
? 데이터 베이스? 웹 서비스? 다른 데이터 소스? – PiRX
데이터가 저장 프로 시저의 데이터베이스에서 전송됩니다. – Darren