对齐多个图表

时间:2019-07-13 21:14:42

标签: c# data-visualization

我看到了this的答案,但是如果您有三个charts会怎样?通常,是否有n个charts彼此堆叠在一起,并且您希望chart实体(areas)彼此对齐?

我很高兴看到三个charts的结果,但是使用function图表并使其对齐的list最有用。

此外,此答案是否假定图表中已经包含所有数据?如果将数据动态添加到runtime并需要保持图表对齐怎么办?问题是y-axis labels的大小可能会随着新数据的出现而改变(出现负号,或者更多的小数位,更多的数字等),将图表主体推向右侧,从而使它们与其他图表区域混淆堆叠在上面/下面。

无论标签多大,都能够分配稳定的Y-axis label extent可以解决其中的一些问题。 如何完成?

2 个答案:

答案 0 :(得分:0)

这应该可行,假设charts是所有图表的数组-

var referenceR = charts
                   .OrderBy(c => c.ChartAreas[0].InnerPlotPosition.ToRectangleF().Width)
                   .FirstOrDefault();

 foreach(var chart in charts)
 {
       chart.Left = referenceR.Left;
       chart.Size = referenceR.Size;
       var r = chart.ChartAreas[0].InnerPlotPosition.ToRectangleF();
       chart.ChartAreas[0].InnerPlotPosition = new ElementPosition(referenceR.Left, r.Top, referenceR.Width, r.Height);
 }

答案 1 :(得分:0)

此解决方案有效。我意识到这不是我要的,但是现在看来,这chart control是“提升”来解决此类问题的内部设计。

我有一个charts和三个chart,而不是三个areas。然后解决对齐问题很简单:

   chart1.ChartAreas["ChartArea2"].AlignWithChartArea = "ChartArea1";
   chart1.ChartAreas["ChartArea3"].AlignWithChartArea = "ChartArea1";

随着数据的实时插入,一切都保持良好的对齐状态。