在 win 图表控件中的位置“0”处隐藏 x 轴上的数据点

Hide data point on x axis at location "0" in win chart controls

我正在绘制如下图所示的图表。在 x 轴上我没有位置“0”,我可以隐藏那个点吗? x 轴上的值从 -35 到 35 不等,其中不存在 0。 x 轴值只是数字。

如果您使用两个数组对 X 轴和 Y 轴进行数据绑定,请在 X 轴数组中找到零值所在的位置,然后添加 X 轴和 Y 轴值,如下所示:

xaxisarray(z) = 0.0        'In case of a double type array
yaxisarray(z) = Double.NaN 'Add a value that is not a number

还要确保在添加上述值之前调整 X 和 Y 轴数组的大小,并将值移动一级,如下所示:

System.Array.Resize(Of Double)(xaxisarray, xaxisarray.Length + 1)
System.Array.Resize(Of Double)(yaxisarray, yaxisarray.Length + 1)
For i As Integer = xaxisarray.Length - 1 To z + 1 Step -1
    xaxisarray(i) = xaxisarray(i - 1)
    yaxisarray(i) = yaxisarray(i - 1)
Next

不能自由更改轴标签的文本,也不能跳过其中任何一个,也不能有选择地使它们透明。

但是有两种选择:

  • 您可以将轴标签替换为 CustomLabels。这意味着您需要创建并全部添加它们,每个都有两个数字,分别为 FromPositionToPosition,即 CustomLabel 应居中的范围。

通常您可以作弊并使用实际的 x 值并简单地减去/添加一个小值;不要太小,以便标签仍然适合。

如果您明确设置了轴 Interval(正如您所做的那样),1/21/3 将是很好的偏移量;或者如果你还设置了 MinumumMaximum 你可以在循环中正确计算范围,见下文!

  • 但在你的情况下解决方案简单得多:你可以像这样格式化轴标签:

Axis ax = yourChartArea.AxisX;
ax.AxisX.LabelStyle.Format = "#";

当然这只有效,因为你想隐藏的值是 0,数字格式可以抑制它。


第一个选项,当然要强大得多。因此,让我们也看一下此选项的示例:

double delta = ax.Interval / 3d;
for (double x = ax.Minimum; x <= ax.Maximum; x+=ax.Interval)
{
    CustomLabel cl = new CustomLabel();
    cl.ToPosition = x + delta;
    cl.FromPosition = x - delta;
    cl.Text =  x.ToString();  // pick your text/format!
    if (x != 0) ax.CustomLabels.Add(cl);
}

两种方法的结果看起来相同: