Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用Livecharts使x轴从0开始并有2秒的步长,而不是从程序启动的第二秒开始?_C#_Livecharts - Fatal编程技术网

C# 如何使用Livecharts使x轴从0开始并有2秒的步长,而不是从程序启动的第二秒开始?

C# 如何使用Livecharts使x轴从0开始并有2秒的步长,而不是从程序启动的第二秒开始?,c#,livecharts,C#,Livecharts,我正在使用 代码隐藏 xaml 但如何更改代码,使I图显示x轴标签从0开始,然后转到0,1,2,…100,…300等。?而不是在第二个程序启动时启动 我想完成以下任务: 也许我可以使用oxyplot之类的其他库,有什么建议吗?我认为最直接的方法是保存第一个数据点DateTime值。然后,您可以计算每个其他数据点的相对时间。使用这些相对值,您可以“使”图表从0开始 要将数据移出图表,如果时间继续,则应将相对时间值输入SetAxisLimits(TimeSpan)函数。数据类型必须更改为T

我正在使用

代码隐藏

xaml

但如何更改代码,使I图显示
x轴标签
0开始,然后转到
0,1,2,…100,…300
等。?而不是在第二个程序启动时启动

我想完成以下任务:


也许我可以使用oxyplot之类的其他库,有什么建议吗?

我认为最直接的方法是保存第一个数据点
DateTime
值。然后,您可以计算每个其他数据点的相对时间。使用这些相对值,您可以“使”图表从
0开始

要将数据移出图表,如果时间继续,则应将相对时间值输入
SetAxisLimits(TimeSpan)
函数。数据类型必须更改为
TimeSpan

大概是这样的:

var now = DateTime.Now;
if(ChartValues.Count == 0)
    start = now; // save first timestamp to reference the following datapoints
var time = now.Subtract(start)
ChartValues.Add(new MeasureModel
{
    Time = time,
    Value = SomeFunction()
});
SetAxisLimits(time);
    var now = DateTime.Now;
    ChartValues.Add(new MeasureModel
    {
        DateTime = now,
        Value = SomeFunction()
    });
    SetAxisLimits(now);
             <wpf:CartesianChart Grid.Row="0" 
                                AnimationsSpeed="0:0:0.9" 
                                Hoverable="False" 
                                DataTooltip="{x:Null}">
                <wpf:CartesianChart.Series>
                    <wpf:LineSeries 
                        Name="MyChart" Values="{Binding ChartValues}" 
                                    PointGeometry="{x:Null}" 
                                    LineSmoothness="2"
                                    StrokeThickness="3" 
                                    Stroke="#F34336"
                                    Fill="Transparent"/>
                </wpf:CartesianChart.Series>
                <wpf:CartesianChart.AxisX>
                    <wpf:Axis LabelFormatter="{Binding DateTimeFormatter}" 
                              MaxValue="{Binding AxisMax}" 
                              MinValue="{Binding AxisMin}"
                              Unit="{Binding AxisUnit}">
                        <wpf:Axis.Separator>
                            <wpf:Separator Step="{Binding AxisStep}" />
                        </wpf:Axis.Separator>
                    </wpf:Axis>
                </wpf:CartesianChart.AxisX>
                <wpf:CartesianChart.AxisY>
                    <wpf:Axis MinValue="-20"
                              MaxValue="20">

                    </wpf:Axis>
                </wpf:CartesianChart.AxisY>
            </wpf:CartesianChart>
var now = DateTime.Now;
if(ChartValues.Count == 0)
    start = now; // save first timestamp to reference the following datapoints
var time = now.Subtract(start)
ChartValues.Add(new MeasureModel
{
    Time = time,
    Value = SomeFunction()
});
SetAxisLimits(time);