图表 - 控制轴间隔,间距和可视性(Chart - Controlling axis interva

2019-10-21 18:38发布

使用图表窗口形成控制来显示:

堆积柱形图
几个系列,每〜70个系列的数据点。 比方说,X:0 - 70次Y轴。

点/线
0-3系列显示,每〜20个系列数据点。 X值是0-20,所以只覆盖chartarea的一部分。 主Y轴。

我加入自定义标签为x轴。 用户可以选择显示24,48或72个数据点。 根据数据点的数量,在x轴的时间间隔被改变。

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

第一个问题
我不希望被显示在主Y轴时的点/线图是不可见的。 这是工作,但是当我添加图形,整个chartarea移动,以适应轴调整大小。 我想chartarea保持静止,只需添加轴的区域。 见图片24_Point和24_NoPoint之间的差异。

第二个问题
在轴上的间隔似乎工作,但数字缩放,为了适应向上/向下移动,即使有似乎不为任何空间问题。 有没有办法强迫方向,字体和距离,使他们不动吗? 我有固定的字体看到的一个问题是,如果在标签关闭,他们会重叠或消失。 在这种情况下,虽然,该计划将在标签和chartarea的数量大小的完全控制,所以它应该是能够控制它。 见图片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_NoPoint
48_Point

Answer 1:

问题1:我不认为你可以使图表留下的空白到左边。 而不是一个简单的解决方法应该做的:显示Y轴,但使标签透明 ! 在这里看到一个类似的例子! 这将需要的空间没有显示出比也许一些不显眼的刻度线更..

问题2:我不认为你能说服他们有足够的空间标签,当图表认为并非如此。 它保留空间较大,为负值,所以我怕你会允许一些额外的空间

  • 减小字体大小或字体宽度
  • 减少标签的数量
  • 扩大chartarea


Answer 2:

带标签的问题的解决,是一个简单的代码更改:

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

要指定每个标签的范围中。 这个范围不仅提供了有关其数据覆盖的信息,但它似乎也指定什么样的空间标签被允许使用。 通过增加这个空间里,根据你想要的时间间隔,标签将能够正常显示,而无需旋转或移动向上/向下。



文章来源: Chart - Controlling axis interval, spacing and visibility