将数据点隐藏在x轴上的位置" 0"在win chart控件中

时间:2017-07-10 06:42:06

标签: c# .net vb.net charts asp.net-charts

我正在绘制图形,如下图所示。在x轴上我没有位置" 0",我可以隐藏那个点。 x轴上的值在-35到35之间变化,其中0不存在。 x轴值只是数字。

enter image description here

2 个答案:

答案 0 :(得分:1)

无法自由更改轴标签的文字,也不会跳过任何标签,也不会选择性地透明。

但有两种选择:

  • 您可以按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);
}

两种方法的结果相同:

enter image description here

答案 1 :(得分:-1)

如果您使用两个数组对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