2012-01-09 139 views
19

我有一个.NET图表,我在运行时填充如何强制图表自动调整Y轴最大值?

图表显示在报表中。我的这份报告每一个乐队,我清除所有系列并将它们添加回使用代码

  Series s = new Series(); 
      s.Font = new Font("Verdana", 8f);     

      int i = 0; 
      foreach (var month in line.Months) 
      { 
       DataPoint p = new DataPoint(); 

       p.XValue = i; 
       p.YValues = new Double[] { month.LineValue ?? 0 }; 
       s.Points.Add(p); 

       i++; 
      } 

当我填充图表的第二次,2000年Y轴的最大支柱,即没有被重新计算

如何强制重新计算?

我对Y轴

启用ScaleBreakStyle如果我尝试IsLogarithmic设置为true在y轴上,我收到了X,而不是图表

我使用Visual Studio 2010的系统。 Windows.forms.DataVisualization.Charting.Chart

保罗

+0

看起来像安东凯德洛夫的答案应该是接受的解决方案 – Molomby 2017-08-02 00:49:58

回答

34

chart.ChartAreas[0].RecalculateAxesScale();

+3

我也试图设置'AxisY.Maximum = Double.NaN'(和AxisY2相同),但它不适合我。 – 2013-03-05 15:18:40

+0

这个答案适合我。我是启用/禁用不同的系列(所有系列最初都是禁用的,并从列表中控制),并注意到只有启用的第一个系列会设置y轴的最大值。 – Doc 2015-12-03 11:48:50

10

The docs说的Axis.Maximum属性的默认是NaN(非数字),所以 你应该能够通过将其设置回 来重新启用自动缩放功能。

事情是这样的......

chart.ChartAreas[0].AxisY.Maximum = Double.NaN; 

UPDATE /校正

安东的回答是正确的;你应该用:

ChartArea.RecalculateAxesScale(); 

根据the RecalculateAxesScale() docs

...有时 必须重新计算图表区域属性,使图表是正确呈现 。例如,如果轴范围发生更改,则该轴的标签必须重新计算。

显然,它自.NET 4.0起就已经可用。

+2

我认为,试图同样的事情,但没有奏效。 Anton Kedrov的回答工程 – yclkvnc 2013-05-29 16:11:05

+0

@yclkvnc,你可以发布一些版本信息吗?我认为这个解决方案曾经工作过,但听起来大多数人现在对安东的回答有更好的运气。 – Molomby 2017-08-02 00:47:05

+0

对不起,我甚至不记得使用.NET图表5年前:) – yclkvnc 2017-08-02 05:41:13

2

你需要运行这个程序:

AxisY.Maximum = Double.NaN; // sets the Maximum to NaN 
AxisY.Minimum = Double.NaN; // sets the Minimum to NaN 
enter code herechart.ChartAreas[0].RecalculateAxesScale(); // recalculates the Maximum and Minimum values, since they are set to NaN 
+1

请格式化代码并解释你做了什么 – Prateek 2016-08-03 18:07:58