2012-01-09 142 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