Oxyplot C# DateTimeAxis 在图表中显示点数据

Oxyplot C# DateTimeAxis show point data in graph

如果我像这样使用 C# 创建 DateTimeAxis:

        DateTimeAxis xAxis = new DateTimeAxis
        {
            Position = AxisPosition.Bottom,
            StringFormat = "dd/MM/yyyy",

            Title = "Year",
            MinorIntervalType = DateTimeIntervalType.Days,
            IntervalType = DateTimeIntervalType.Days,
            MajorGridlineStyle = LineStyle.Solid,
            MinorGridlineStyle = LineStyle.None,
        };

        FunctionSeries fs = new FunctionSeries();
        fs.Points.Add(new DataPoint(DateTimeAxis.ToDouble(DateTime.Now), 5));
        fs.Points.Add(new DataPoint(DateTimeAxis.ToDouble(new DateTime(1989, 10, 3)), 8));

        PlotModel n = new PlotModel();
        n.Series.Add(fs);
        n.Axes.Add(xAxis);
        n.Axes.Add(new LinearAxis());

        pv.Model = n;

图表上的一切都很好,但如果我按下该点,我会得到这些数据作为标签:

年份:0.#### X: 6.2523

所以 X 信息是正确的,但我不知道为什么 oxyplot 没有显示正确的年份?

似乎系列 TrackerFormatString 属性 有问题。用于格式化单击图表时显示的字符串。

有关其定义,请参阅 oxyplot 文档的 page 44, section 1.3.4

它看起来像是将字符串格式字符串 {Date:0.###} 按字面意思处理为双精度而不是用关联的 属性.

填充它

要获得正确的输出,请将 fs.TrackerFormatString = "Year: {2:yyyy-MM-dd} X: {4:0.###}"; 添加到您的代码中。如果您想使用标准的 C# DateTime 格式字符串语法,您可以设置不同的日期格式。

This thread,对于找出未记录的设置特别有帮助。特别是以下内容是相关的,

The tracker format string has some variations for different series (should be documented... and maybe improved?), but it should at least support the following arguments

{0} the title of the series {1} the title of the x-axis {2} the x-value {3} the title of the y-axis {4} the y-value

请注意我是如何使用上面的 {2} 和 {4} 分别获取 x 值和 y 值的。