C# 在位置“隐藏x轴上的数据点”;0“;in-win图表控件
我正在绘制下图所示的图形。在x轴上,我没有位置“0”,我可以隐藏该点吗。x轴上的值在-35到35之间变化,其中不存在0。x轴值只是数字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轴和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
不能自由更改轴标签的文本,也不能跳过任何轴标签,也不能选择性地使其透明 但有两种选择:
- 您可以使用
替换轴标签。这意味着您需要创建并添加它们,每个都有两个数字,分别表示自定义标签
和起始位置
,即位置
应居中的范围自定义标签
间隔
(正如您所做的那样)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);
}