图表 - 控制轴间隔,间距和可见性

时间:2015-02-05 10:12:33

标签: c# charts axis-labels

使用图表窗口窗体控件显示:

叠加的柱子 几个系列,每个系列约70个数据点。假设x:0 - 70.辅助Y轴。

点/线
显示0-3系列,每个系列约20个数据点。 X值为0-20,因此仅覆盖图表区域的一部分。主要Y轴。

我正在为x轴添加自定义标签。用户可以选择显示24,48或72个数据点。根据数据点的数量,x轴上的间隔会发生变化。

24 -> Interval 1  
48 -> Interval 2  
72 -> Interval 3  

第一个问题
当点/线图不可见时,我不希望显示主Y轴。这是有效的,但是当我添加图形时,整个图表区域会移动并调整大小以适应轴。我希望图表区域保持静止,只需将轴添加到该区域即可。查看图像24_Point和24_NoPoint之间的差异。

第二个问题 轴上的间隔似乎有效,但数字会按比例调整并上下移动以适应,即使似乎没有任何空间问题。有没有办法强制方向,字体和距离,所以他们不动?我看到修复字体的问题是,如果标签要关闭,它们将重叠或消失。但在这种情况下,程序将完全控制标签的数量和图表区域的大小,因此它应该能够控制它。查看图像24_Point和48_Point之间的差异。

相关代码

Chart.ChartAreas["Default"].AxisX.CustomLabels.Clear();
if (PlotHours == 24){
  interval = 1;
} else if (PlotHours == 48){
  interval = 2;
} else {
  interval = 3;
}

q = 0;

for (int i = 0; i=72; i++){
  if (q==0){
    Chart.ChartAreas["Default"].AxisX.CustomLabels.Add((i-0.5, (i+0.5), AxisLabels[i]);
  }
  if (q == (interval-1)){
    q = 0;
  } else {
    q++;
  }
}
Chart.ChartAreas["Default"].AxisX.Interval = interval;
Chart.ChartAreas["Default"].AxisX.IntervalOffset = 1;

参考图像
我没有删除图片的黑色区域的原因是为了保持它们的规模。

24_Point
24_Point 24_NoPoint
24_noPoint 48_Point
48_Point

2 个答案:

答案 0 :(得分:1)

问题1:我认为你不能让图表离开左边的空白区域。相反,一个简单的解决方法应该做:显示Y轴,但使标签透明See here for a similar example!这将占据空间,而不会显示出一些不显眼的刻度线。

问题2:当图表不相信时,我认为你不能说服标签他们有足够的空间。它保留了较大和负值的空间,所以我担心你必须允许一些额外的空间

  • 缩小字体大小或字体宽度
  • 减少标签数量
  • 扩大图表区域

答案 1 :(得分:0)

标签问题通过简单的代码更改解决:

    Chart.ChartAreas["Default"].AxisX.CustomLabels.Add((i-(interval/2), (i+(interval/2)), AxisLabels[i]);

您正在为每个标签指定范围。此范围不仅提供有关其涵盖的数据的信息,而且还似乎指定允许标签使用的空间。通过增加此空间,根据您想要的间隔,标签将能够正确显示,而无需旋转或上下移动。