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



我有一个.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

chart.ChartAreas[0].RecalculateAxesScale();

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

像这样的。。。

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

更新/更正

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

ChartArea.RecalculateAxesScale();

根据RecalculateAxesScale()文件:

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

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

您需要运行以下序列:

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();

最新更新