在 mschart 中的某些数据点显示 x 轴标签

Display x-axis label at certain data-points in mschart

我正在尝试绘制一条正态分布曲线(作为 SeriesChartType.Spline),该曲线上有一个选定的项目位置。我的 x 轴有点乱,所以我想整理一下,但我想不出在特定位置显示轴标签的方法。

我想在曲线上显示 {x(0), x(mean), x(n)} 处的值以及所选项目的数据点的 x 轴值。

我试过

.ChartAreas(0).AxisX.Interval 

但我不一定有标准的区间范围。

有没有办法只在指定的数据点显示 x 轴标签?

[编辑]:

按照建议,我为此图表实现了几个自定义标签。它们并不完全是我所说的直观使用,但它们最终完成了工作。

'//create x-axis labels
mu = Math.Round(mu, 2, MidpointRounding.AwayFromZero)
bci = Math.Round(CDbl(bci), 2, MidpointRounding.AwayFromZero)
Dim muLabel = String.Format("{0}({1})", "µ", mu)

'//Fit axis
With .ChartAreas(0)
    With .AxisX
        .MajorGrid.LineWidth = 0
        .MajorTickMark.Enabled = false
        .Minimum = 0
        With .CustomLabels
            .Add(New CustomLabel(0, 0.4, 0, 0, LabelMarkStyle.LineSideMark))                        '//origin label
            .Add(New CustomLabel(mu-10, mu + 10, muLabel, 0, LabelMarkStyle.LineSideMark))          '//mean label)
            .Add(New CustomLabel(bci-10, bci + 10, bci.ToString, 0, LabelMarkStyle.LineSideMark))   '//index label
        End With
        With .LabelStyle
            .Format = "{0.00}"
            .Font = New Font("Microsoft Sans Serif", 8)
        End With
...

我为标签选择的范围有点随意。我的数据分布不会立即发生太大变化,因此我选择了一个看起来与字体合理的范围,以便标签位于中心。现在看起来更具可读性:http://i.imgur.com/7buwdyk.png

您应该可以使用 custom labels (example here), but might need to do some extra fiddling to hide the normal labels (example here).

您可以选择其中一个

  • CustomLabels替换普通标签。它们有点棘手,因为您无法设置它们的位置。相反,您需要 两个 位置(FromPositionToPosition)来声明 CustomLabel 应居中的范围。请注意,一旦您使用 CustomLabels ,正常的将不会显示

  • 或者您可以添加TextAnnotations。您可以将 AnchorX 设置为您想要的值,并将 Y 位置设置为您的 y 值的最小值。获得这些权利也有点棘手,涉及 Annotation 的轴以及应该为假的 IsSizeAlwaysRelative

  • 或者您可以使用 [=24= 编码 Pre- 或 PostPaint 事件和 Graphics.DrawStringTextRenderer.DrawText ] axes函数获取坐标。这实际上可能是最容易做到的..