C# 用于中断DateTimeAxis系列的Oxyplot

C# 用于中断DateTimeAxis系列的Oxyplot,c#,oxyplot,C#,Oxyplot,我怎样才能在某个时刻中断意甲联赛,然后在以后的时刻继续? 例如,我将日期时间轴设为Y,然后数据一直存在到某个日期,然后没有数据,之后我又有数据。我想要的不是插值上一个数据点,在那里数据已经被连续中断,但是我想要停止绘图并在数据仍然存在时继续 在屏幕截图中,线性坡度是由于缺少数据造成的。我想要的是避开那条线。我仍然希望所有中断的数据都在同一系列中 更新: foreach (var dp in readings) { data.Add(new DateValue { Dat

我怎样才能在某个时刻中断意甲联赛,然后在以后的时刻继续? 例如,我将日期时间轴设为Y,然后数据一直存在到某个日期,然后没有数据,之后我又有数据。我想要的不是插值上一个数据点,在那里数据已经被连续中断,但是我想要停止绘图并在数据仍然存在时继续

在屏幕截图中,线性坡度是由于缺少数据造成的。我想要的是避开那条线。我仍然希望所有中断的数据都在同一系列中

更新:

foreach (var dp in readings)
{
    data.Add(new DateValue {
        Date = dp.Date,
        Temperature = dp.Data.Where(y => y.Cell == c.Number).
                              Select(x => Convert.ToDouble(x.GetType().GetProperty(sensor.PropertyName).GetValue(x, null))).
                              FirstOrDefault() });

    if (lastDate != null && (dp.Date - lastDate).TotalMinutes > 10)
    {
        data.Add(new DateValue
        {
            Date = dp.Date,
            Temperature = double.NaN
        });
        Console.WriteLine("break");
    }

    lastDate = dp.Date;
}
mode1Data.Add(c.Number, data);

添加
数据点。未定义的
,将在行中创建一个中断。您还可以设置“虚线”的样式(代码示例取自oxyplot LineSeriesExample.cs):

无数据绑定:

使用数据绑定: xaml:


型号:

Measurements = new Collection<Measurement>();
int N = 500;
Subtitle = "N = " + N;

var r = new Random(385);
double dy = 0;
double y = 0;
for (int i = 0; i < N; i++)
{
    dy += r.NextDouble() * 2 - 1;
    y += dy;

    // Create a line break
    if (i % 10 == 0)
    {
        Measurements.Add(new Measurement
        {
            Time = double.NaN, // For DateTime put DateTime.MinValue
            Value = double.NaN
        });   
    }
    else
    {
        Measurements.Add(new Measurement
        {
            Time = 2.5 * i / (N - 1),
            Value = y / (N - 1),
        });   
    }
}
measures=新集合();
int N=500;
Subtitle=“N=”+N;
var r=新随机变量(385);
双dy=0;
双y=0;
对于(int i=0;i
结果:

什么算数据不存在?这意味着如果你有一个datetime 12/12/2012 10:00:00,下一个值是12/12/2012 10:30:00,那么这两个时间段之间不存在数据,但我假设这不是你的意思。换句话说,数据不存在时两点之间的间隔时间是多少?数据每5分钟采样一次。如果间隔大于,则视为中断您是否使用lineseries?是的,先生,
lineseries
是我正在使用的。这正是我想要的,但是如果我不使用
DataPoint
类,我怎么能拥有它?相反,在系列中,我使用在ItemSource中指定的我自己的对象,然后是
DataFieldX
DataFieldY
。我没有尝试过,但是DataPoint.Undefined有double.NaN作为x,y。正在尝试将DataFieldX和DataFieldY设置为double.NaN。问题是我无法为日期-时间轴添加double.NaN。我只是尝试将值添加为NaN,但没有成功。
Time=double.NaN
是我不能做的,因为我有
DateTime
变量。。。我还用一些代码更新了我的问题
<oxy:Plot x:Name="plot1" Title="Binding ItemsSource" Subtitle="{Binding Subtitle}">
  <oxy:Plot.Series>
    <oxy:LineSeries Title="Maximum" DataFieldX="Time" DataFieldY="Maximum" Color="Red" LineStyle="Solid" StrokeThickness="2" ItemsSource="{Binding Measurements}"/>
  </oxy:Plot.Series>
</oxy:Plot>
Measurements = new Collection<Measurement>();
int N = 500;
Subtitle = "N = " + N;

var r = new Random(385);
double dy = 0;
double y = 0;
for (int i = 0; i < N; i++)
{
    dy += r.NextDouble() * 2 - 1;
    y += dy;

    // Create a line break
    if (i % 10 == 0)
    {
        Measurements.Add(new Measurement
        {
            Time = double.NaN, // For DateTime put DateTime.MinValue
            Value = double.NaN
        });   
    }
    else
    {
        Measurements.Add(new Measurement
        {
            Time = 2.5 * i / (N - 1),
            Value = y / (N - 1),
        });   
    }
}