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

Pau*_*aul 23 .net asp.net-charts c#-4.0

我有一个.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++;
            }
Run Code Online (Sandbox Code Playgroud)

当我第二次填充图表时,Y轴最大值保持在2000,即没有重新计算

我该如何强制重新计算?

我在Y轴上启用了ScaleBreakStyle

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

我使用Visual Studio 2010与System.Windows.forms.DataVisualization.Charting.Chart

保罗

Ant*_*rov 40

chart.ChartAreas[0].RecalculateAxesScale();

  • 我也试图设置`AxisY.Maximum = Double.NaN`(和AxisY2相同),但它对我不起作用. (3认同)

Mol*_*mby 10

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

像这样......

chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
Run Code Online (Sandbox Code Playgroud)

更新/更正

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

ChartArea.RecalculateAxesScale();
Run Code Online (Sandbox Code Playgroud)

根据RecalculateAxesScale()文档:

...有时需要重新计算图表区域属性,以便正确呈现图表.例如,如果更改轴范围,则必须重新计算该轴的标签.

显然,它已经从.NET 4.0开始提供.

  • 我想并尝试了同样的事情,但它没有用.Anton Kedrov的回答很有效 (2认同)

Lin*_*Lin 6

首先,初始化:

chart.ChartAreas[0].AxisY.IsStartedFromZero = false;
Run Code Online (Sandbox Code Playgroud)

每当添加数据点时,请执行此操作。

pinChart.ChartAreas[0].RecalculateAxesScale();
Run Code Online (Sandbox Code Playgroud)


ehs*_*pro 5

你需要运行这个序列:

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
Run Code Online (Sandbox Code Playgroud)