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

bin*_*Int 5 c# oxyplot

如果我像这样用 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;
Run Code Online (Sandbox Code Playgroud)

图表上的一切都很好,但是如果我按下该点,我会将此数据作为标签:

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

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

Wil*_*man 4

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

有关其定义,请参阅oxyplot 文档第 44 页第 1.3.4 节。

看起来它{Date:0.###}实际上将字符串格式字符串视为双精度,而不是用关联的属性填充它。

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

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

跟踪器格式字符串对于不同系列有一些变化(应该记录......并且可能改进?),但它至少应该支持以下参数

{0} 系列标题 {1} x 轴标题 {2} x 值 {3} y 轴标题 {4} y 值

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