.net - valores - ¿Cómo fuerzo un gráfico para ajustar automáticamente el eje Y máximo?
graficas en python matplotlib (3)
Tengo un gráfico .NET que estoy llenando en tiempo de ejecución
El gráfico aparece dentro de un informe. Para cada banda en mi informe, borro todas las series y las agrego usando el código
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++;
}
Cuando relleno el gráfico por segunda vez, el máximo del Eje Y permanece en 2000, es decir, no se está recalculando
¿Cómo fuerzo el recálculo?
Tengo ScaleBreakStyle habilitado en el eje Y
Si trato de establecer IsLogarithmic en true en el eje Y, obtengo una X en lugar de un gráfico
Estoy usando Visual Studio 2010 con System.Windows.forms.DataVisualization.Charting.Chart
Pablo
necesitas ejecutar esta secuencia:
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
Los documentos dicen que el valor predeterminado para la propiedad Axis.Maximum
es NaN (no es un número), por lo que debería poder volver a habilitar la función de escala automática al volver a establecer ese valor .
Algo como esto...
chart.ChartAreas[0].AxisY.Maximum = Double.NaN;
ACTUALIZACIÓN / CORRECCIÓN
La respuesta de Anton es correcta; usted debe utilizar:
ChartArea.RecalculateAxesScale();
Según los documentos RecalculateAxesScale()
:
... a veces es necesario volver a calcular las propiedades del área del gráfico para que el gráfico se represente correctamente. Por ejemplo, si se cambia un rango de ejes, las etiquetas para ese eje deben recalcularse.
Al parecer, ha estado disponible desde .NET 4.0.
chart.ChartAreas[0].RecalculateAxesScale();