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

Chart - Controlling axis interval, spacing and visibility

使用图表windows表格控件显示:

堆积柱
几个系列,每个系列约 70 个数据点。假设 x:0 - 70。次 Y 轴。

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

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

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

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

第二个问题
轴上的间隔似乎有效,但数字被缩放和移动 up/down 以适应,即使似乎没有任何 space 问题。有什么办法可以强制方向、字体和距离,使它们不动?我在修复字体时看到的一个问题是,如果标签要关闭,它们将重叠或消失。但在这种情况下,程序将完全控制标签的数量和图表区的大小,因此它应该能够控制它。查看图像 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

问题 1:我认为您无法让图表在左侧留空 space。相反,一个简单的解决方法应该是:显示 Y 轴但使标签 透明 这将占用 space 而不会显示更多可能只是一些不显眼的刻度线..

问题 2:我认为您无法让标签相信它们有足够的空间,而图表却不这么认为。它为更大的值和负值保留 space,所以恐怕您将不得不允许

额外的 space
  • 减小字体大小或字体宽度
  • 减少标签数量
  • 扩大图表区

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

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

您正在为每个标签指定一个范围。这个范围不仅给出了它涵盖了哪些数据的信息,而且似乎还指定了 space 标签允许使用的内容。通过增加此 space,根据您想要的间隔,标签将能够正确显示,而无需旋转或移动 up/down。