24

我有一个在运行时填充的 .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 而不是图表

我正在使用带有 System.Windows.forms.DataVisualization.Charting.Chart 的 Visual Studio 2010

保罗

4

4 回答 4

50

chart.ChartAreas[0].RecalculateAxesScale();

于 2013-03-05T15:11:41.750 回答
14

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

像这样的东西...

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

更新/更正

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

ChartArea.RecalculateAxesScale();

根据文档_RecalculateAxesScale()

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

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

于 2012-05-15T03:35:38.643 回答
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
于 2016-08-03T18:00:13.700 回答
5

首先,初始化这个:

chart.ChartAreas[0].AxisY.IsStartedFromZero = false;

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

pinChart.ChartAreas[0].RecalculateAxesScale();
于 2019-11-15T11:40:56.917 回答