I have a .NET chart which I am populating at runtime
The chart appears within a report. For each band in my report, I clear all the series and add them back in using code
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++; }
When I populate the chart the second time, the Y Axis maximum stays on 2000, i.e. is not being recalculated
How do I force recalculation?
I have ScaleBreakStyle enabled on the Y Axis
If I try to set IsLogarithmic to true on the Y Axis I get a X instead of a chart
I am using Visual Studio 2010 with the System.Windows.forms.DataVisualization.Charting.Chart
Paul
chart.ChartAreas[0].RecalculateAxesScale();
The docs say the default for the Axis.Maximum
property is NaN (not a number), so you should be able to re-enable the automatic scaling functionality by setting it back to that value.
Something like this...
chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
UPDATE / CORRECTION
Anton's answer is correct; you should be using:
ChartArea.RecalculateAxesScale();
According to the RecalculateAxesScale()
docs:
... it is sometimes necessary to recalculate chart area properties so that the chart is rendered correctly. For example, if an axis range is changed, the labels for that axis must be recalculated.
Apparently, it's has been available since .NET 4.0.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With