我有一个.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
保
答案 0 :(得分:37)
chart.ChartAreas[0].RecalculateAxesScale();
答案 1 :(得分:10)
The docs说Axis.Maximum
属性的默认值是NaN(不是数字),所以你应该能够通过将其设置回该值来重新启用自动缩放功能击>。
像这样......
chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
更新/更正
安东的回答是正确的;你应该使用:
ChartArea.RecalculateAxesScale();
根据the RecalculateAxesScale()
docs:
......有时候 必须重新计算图表区域属性,以便图表是 正确渲染。例如,如果更改轴范围,则 必须重新计算该轴的标签。
显然,它已经从.NET 4.0开始提供。
答案 2 :(得分:3)
你需要运行这个序列:
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
答案 3 :(得分:0)
首先,将其初始化:
chart.ChartAreas[0].AxisY.IsStartedFromZero = false;
无论何时添加数据点,请执行此操作。
pinChart.ChartAreas[0].RecalculateAxesScale();