Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在位置“隐藏x轴上的数据点”;0“;in-win图表控件_C#_.net_Vb.net_Charts_Asp.net Charts - Fatal编程技术网

C# 在位置“隐藏x轴上的数据点”;0“;in-win图表控件

C# 在位置“隐藏x轴上的数据点”;0“;in-win图表控件,c#,.net,vb.net,charts,asp.net-charts,C#,.net,Vb.net,Charts,Asp.net Charts,我正在绘制下图所示的图形。在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轴上,我没有位置“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

不能自由更改轴标签的文本,也不能跳过任何轴标签,也不能选择性地使其透明

但有两种选择:

  • 您可以使用
    自定义标签
    替换轴标签。这意味着您需要创建并添加它们,每个都有两个数字,分别表示
    起始位置
    位置
    ,即
    自定义标签
    应居中的范围
通常你可以作弊,使用一个实际的x值,然后简单地减去/加上一个小值;不要太小,以便标签仍然适合

如果您明确设置了轴
间隔
(正如您所做的那样)
1/2
1/3
,这将是很好的偏移;或者,如果您还设置了
最小值
最大值
,则可以在循环中正确计算范围,请参见下文

  • 但在您的情况下解决方案要简单得多:您可以按如下方式格式化轴标签:

当然,这只是因为要隐藏的值是
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);
}
double delta=ax.Interval/3d;

对于(double x=ax.Minimum;x实际上,我并没有在序列中添加任何以0作为x值的点。如果使用直线或快速直线进行绘图,它只连接两个数据点。即使在x轴值(0)处没有值,它只是连接了-1和+1处的x轴值,这看起来像是0处的绘图值。您可以将图表类型更改为点类型,或者为正在添加的每个数据点添加一个标记。您反复声明要删除一个数据点。您实际的意思不是一个数据点,而是一个标签!实际上我犯了一个我写的错误g问题。为了改进SO存档,请编辑并更正问题!我提出了并排绘制两个图表区域的解决方案。这样我可以消除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);
}