.net 如何强制图表自动调整Y轴最大值?

.net 如何强制图表自动调整Y轴最大值?,.net,c#-4.0,asp.net-charts,.net,C# 4.0,Asp.net Charts,我有一个运行时填充的.NET图表 该图表显示在报表中。对于我报告中的每个波段,我清除所有系列并使用代码将它们添加回 Series s = new Series(); s.Font = new Font("Verdana", 8f); int i = 0; foreach (var month in line.Months) {

我有一个运行时填充的.NET图表

该图表显示在报表中。对于我报告中的每个波段,我清除所有系列并使用代码将它们添加回

            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++;
            }
第二次填充图表时,Y轴最大值保持在2000,即不重新计算

如何强制重新计算

我在Y轴上启用了ScaleBreakStyle

如果我尝试在Y轴上将IsLogarithmic设置为true,我得到的是X而不是图表

我正在将Visual Studio 2010与System.Windows.forms.DataVisualization.Charting.Chart一起使用

Paul

假设
轴的默认值。Maximum
属性为NaN(不是数字),因此您应该能够通过将其设置回该值来重新启用自动缩放功能

像这样的

chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
更新/更正

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

ChartArea.RecalculateAxesScale();
根据:

。。。有时是这样 需要重新计算图表区域属性,以便图表 渲染正确。例如,如果轴范围发生更改,则 必须重新计算该轴的标签


显然,它从.NET 4.0开始就可用了。

chart.ChartAreas[0]。RecreacteAxesCale()

您需要运行此序列:

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

首先,初始化这个:

chart.ChartAreas[0].AxisY.IsStartedFromZero = false;
无论何时添加数据点,请执行此操作

pinChart.ChartAreas[0].RecalculateAxesScale();

我还试图设置
AxisY.max=Double.NaN
(对于AxisY2也是如此),但它对我不起作用。这个答案对我有效。我启用/禁用了不同的系列(所有系列最初都被禁用并从列表中进行控制),注意到只有启用的第一个系列会设置y轴的最大值。我想并尝试了相同的方法,但没有成功。安东·凯德罗夫的回答works@yclkvnc,你能发布一些版本信息吗?我认为这个解决方案曾经奏效,但听起来最近大多数人对安东的答案的运气更好。对不起,我甚至不记得5年前使用过.NET图表:)看起来安东·凯德罗夫的答案应该是公认的解决方案