Ответ 1
chart.ChartAreas[0].RecalculateAxesScale();
У меня есть таблица .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, т.е. не пересчитывается
Как заставить перерасчет?
У меня есть ScaleBreakStyle включен на оси Y
Если я пытаюсь установить IsLogarithmic в true на оси Y, я получаю вместо X вместо диаграммы
Я использую Visual Studio 2010 с System.Windows.forms.DataVisualization.Charting.Chart
Пол
chart.ChartAreas[0].RecalculateAxesScale();
Документы говорят, что значение по умолчанию для свойства Axis.Maximum
- NaN (не число), поэтому вы должны быть способны чтобы снова включить функцию автоматического масштабирования, установив ее обратно на это значение.
Что-то вроде этого...
chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
ОБНОВЛЕНИЕ/КОРРЕКЦИЯ
Ответ Антона правильный; вы должны использовать:
ChartArea.RecalculateAxesScale();
В соответствии с RecalculateAxesScale()
docs:
... иногда необходимо пересчитать свойства области диаграммы, чтобы диаграмма визуализируется правильно. Например, если диапазон осей изменен, метки для этой оси должны быть пересчитаны.
По-видимому, он доступен с .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