Personalizar ejes de gráficos en presentaciones en Android

Visión general

Este artículo explica cómo personalizar los ejes de los gráficos con Aspose.Slides para Android a través de Java. Cubre valores calculados de los ejes, intercambio de filas y columnas del gráfico, visibilidad de los ejes, intervalos de etiquetas de categoría y de marcas de graduación, categorías de fecha y formato, rotación del título, posicionamiento del eje, unidades de visualización y escala logarítmica.

Obtener los valores máximos en el eje vertical de los gráficos

Cree una Presentación y añada un gráfico de áreas con datos predeterminados. Llame a validateChartLayout antes de leer los valores calculados de los ejes para que el diseño del gráfico esté actualizado.

Lea getActualMaxValue y getActualMinValue para obtener los límites del eje, y getActualMajorUnit y getActualMinorUnit para los intervalos de graduaciones. getActualMajorUnitScale y getActualMinorUnitScale proporcionan escalas de unidad de tiempo, relevantes para ejes de fecha. El ejemplo almacena estos valores en variables locales y guarda el gráfico.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Area, 100, 100, 500, 350);
    chart.validateChartLayout();

    double maxValue = chart.getAxes().getVerticalAxis().getActualMaxValue();
    double minValue = chart.getAxes().getVerticalAxis().getActualMinValue();

    double majorUnit = chart.getAxes().getVerticalAxis().getActualMajorUnit();
    double minorUnit = chart.getAxes().getVerticalAxis().getActualMinorUnit();

    int majorUnitScale = chart.getAxes().getVerticalAxis().getActualMajorUnitScale();
    int minorUnitScale = chart.getAxes().getVerticalAxis().getActualMinorUnitScale();

    presentation.save("AxisValues_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Intercambiar los datos entre ejes

Utilice switchRowColumn para intercambiar los roles de series y categorías en los datos del gráfico. Cada categoría anterior se convierte en una serie, y cada serie anterior se convierte en una categoría. Esto cambia la forma en que se agrupan los datos; no intercambia los ejes horizontal y vertical. El ejemplo usa setRange para vincular los datos predeterminados a Sheet1!A1:D5, incluyendo la fila de encabezado y la columna de categorías, antes de cambiar filas y columnas. Guarda un gráfico con cuatro series y tres categorías.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 100, 100, 400, 300);
    chart.getChartData().setRange("Sheet1!A1:D5");
    chart.getChartData().switchRowColumn();

    presentation.save("SwitchChartRowColumns_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Invertir el orden de trazado de un eje

Utilice setPlotOrderReversed para invertir un eje de categoría o de valores. Por ejemplo, un gráfico de barras horizontal puede mostrar las etapas del proyecto de arriba a abajo en el mismo orden que la hoja de cálculo: Planificación, Desarrollo, Pruebas. Invertir un eje cambia la dirección de trazado; no ordena ni reorganiza los datos del libro de trabajo. En comparación, switchRowColumn intercambia los roles de series y categorías.

El siguiente ejemplo crea un gráfico de barras horizontal con tres etapas y una serie. Guarda una presentación con tres diapositivas: orden normal, categorías invertidas y valores invertidos. Cada copia utiliza el mismo conjunto de datos, y solo un eje se invierte en cada copia.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredBar, 50, 40, 620, 320);
    chart.setLegend(false);

    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    IChartSeries series = chart.getChartData().getSeries().add(ChartType.ClusteredBar);
    String[] stages = { "Planning", "Development", "Testing" };
    int[] values = { 10, 30, 20 };
    for (int i = 0; i < stages.length; i++) {
        IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, stages[i]);
        chart.getChartData().getCategories().add(categoryCell);
        IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, values[i]);
        series.getDataPoints().addDataPointForBarSeries(valueCell);
    }

    // Diapositiva 2: mostrar la primera categoría en la parte superior.
    ISlide categorySlide = presentation.getSlides().addClone(slide);
    IChart categoryChart = (IChart)categorySlide.getShapes().get_Item(0);
    categoryChart.getAxes().getVerticalAxis().setPlotOrderReversed(true);
    // Mantener el eje de valores horizontal en la parte inferior.
    categoryChart.getAxes().getVerticalAxis().setCrossType(CrossesType.Maximum);

    // Diapositiva 3: invertir solo la escala numérica horizontal.
    ISlide valueSlide = presentation.getSlides().addClone(slide);
    IChart valueChart = (IChart)valueSlide.getShapes().get_Item(0);
    valueChart.getAxes().getHorizontalAxis().setPlotOrderReversed(true);

    presentation.save("ReversedAxes.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Invertir un eje también puede mover el eje perpendicular al lado opuesto del gráfico. setCrossType controla dónde el otro eje cruza el eje que se está configurando. En la diapositiva 2, llamarlo con CrossesType.Maximum en el eje de categoría invertido mantiene el eje de valores horizontal en la parte inferior. Para un punto de cruce específico, use setCrossAt. Verifique la configuración de cruce al cambiar la dirección, especialmente si el gráfico ya tiene un punto de cruce personalizado. Llame a setPlotOrderReversed con false para restaurar la dirección de trazado normal; la configuración de cruce es independiente.

Orden normal (diapositiva 1) Categorías invertidas (diapositiva 2) Valores invertidos (diapositiva 3)
Gráfico de barras horizontal con orden normal de ejes de categoría y valor Gráfico de barras horizontal con categorías mostradas de arriba a abajo Gráfico de barras horizontal con eje de valor invertido y cero a la derecha
Las categorías van de abajo a arriba; los valores aumentan de izquierda a derecha. Planificación, Desarrollo y Pruebas van de arriba a abajo. Los valores y el orden de filas del libro de trabajo no cambian. Las categorías conservan su orden normal; los valores aumentan de derecha a izquierda. El eje de categoría cruza en cero a la derecha.

Desactivar el eje vertical para gráficos de líneas

Llamar a setVisible con false en el eje vertical para ocultarlo. El ejemplo crea un gráfico de líneas con datos predeterminados y lo guarda con el eje vertical oculto.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
    chart.getAxes().getVerticalAxis().setVisible(false);

    presentation.save("HiddenVerticalAxis.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Desactivar el eje horizontal para gráficos de líneas

Llamar a setVisible con false en el eje horizontal para ocultarlo. El ejemplo crea un gráfico de líneas con datos predeterminados y lo guarda con el eje horizontal oculto.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Line, 100, 100, 400, 300);
    chart.getAxes().getHorizontalAxis().setVisible(false);

    presentation.save("HiddenHorizontalAxis.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Cambiar un eje de categoría

Utilice setCategoryAxisType para elegir un eje de categoría de fecha o de texto. Este ejemplo requiere ExistingChart.pptx, con un gráfico como la primera forma en la primera diapositiva y celdas de categoría que contienen valores numéricos de fechas de Excel. Cambia el eje horizontal a un eje de fecha. Llamar a setAutomaticMajorUnit con false, setMajorUnit con 1 y setMajorUnitScale con TimeUnitType.Months coloca las marcas principales en intervalos de un mes.

import com.aspose.slides.*;

Presentation presentation = new Presentation("ExistingChart.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = (IChart) slide.getShapes().get_Item(0);
    chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
    chart.getAxes().getHorizontalAxis().setAutomaticMajorUnit(false);
    chart.getAxes().getHorizontalAxis().setMajorUnit(1);
    chart.getAxes().getHorizontalAxis().setMajorUnitScale(TimeUnitType.Months);

    presentation.save("ChangeChartCategoryAxis_out.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Controlar los intervalos de etiquetas del eje de categoría

Cuando un gráfico tiene muchas categorías, reduzca el número de etiquetas de eje visibles sin eliminar categorías ni puntos de datos. Llame a setAutomaticTickLabelSpacing con false, y luego pase el intervalo de categoría deseado a setTickLabelSpacing. Para categorías de texto en su orden normal, el recuento comienza en la primera categoría:

Intervalo Etiquetas mostradas en el ejemplo
1 Categoría 1, Categoría 2, Categoría 3, … Categoría 24
2 Categoría 1, Categoría 3, Categoría 5, … Categoría 23
3 Categoría 1, Categoría 4, Categoría 7, … Categoría 22

Un intervalo de 3 muestra cada tercera etiqueta, dejando dos etiquetas ocultas entre las mostradas. No elimina las columnas correspondientes. El espaciado automático elige un intervalo en función del espacio disponible; no muestra necesariamente cada etiqueta.

Las marcas de graduación tienen controles independientes. Llame a setAutomaticTickMarksSpacing con false y use setTickMarksSpacing para establecer su intervalo. Por ejemplo, 1 mantiene una marca de graduación en cada intervalo de categoría mientras las etiquetas aparecen solo cada tercera categoría. Use setMajorTickMark con un estilo visible para poder ver el resultado. Llamar a cualquiera de los configuradores de espaciado automático con true nuevamente permite que el gráfico elija ese intervalo otra vez.

El siguiente ejemplo autónomo crea 24 categorías y una serie, luego guarda tres diapositivas en CategoryAxisIntervals.pptx: espaciado automático, espaciado manual de etiquetas con marcas de graduación independientes y espaciado automático restaurado. Las dos copias conservan los datos originales del gráfico. No se necesita una presentación de entrada. El texto de las etiquetas horizontales facilita ver la diferencia de densidad.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 30, 40, 660, 320);

    chart.setLegend(false);
    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    IChartSeries series = chart.getChartData().getSeries().add(ChartType.ClusteredColumn);
    for (int i = 0; i < 24; i++) {
        IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, "Category " + (i + 1));
        chart.getChartData().getCategories().add(categoryCell);
        IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, 10 + i % 6 * 5);
        series.getDataPoints().addDataPointForBarSeries(valueCell);
    }

    IAxis axis = chart.getAxes().getHorizontalAxis();
    axis.setCategoryAxisType(CategoryAxisType.Text);
    axis.getTextFormat().getTextBlockFormat().setRotationAngle(0);
    axis.getTextFormat().getPortionFormat().setFontHeight(12);
    axis.setMajorTickMark(TickMarkType.Outside);
    axis.setAutomaticTickLabelSpacing(true);
    axis.setAutomaticTickMarksSpacing(true);

    // Diapositiva 2: mostrar cada tercera etiqueta, pero mantener una marca de graduación para cada categoría.
    ISlide manualSlide = presentation.getSlides().addClone(slide);
    IChart manualChart = (IChart)manualSlide.getShapes().get_Item(0);
    IAxis manualAxis = manualChart.getAxes().getHorizontalAxis();
    manualAxis.setAutomaticTickLabelSpacing(false);
    manualAxis.setTickLabelSpacing(3);
    manualAxis.setAutomaticTickMarksSpacing(false);
    manualAxis.setTickMarksSpacing(1);

    // Diapositiva 3: permitir que el gráfico elija ambos intervalos de nuevo.
    ISlide restoredSlide = presentation.getSlides().addClone(manualSlide);
    IChart restoredChart = (IChart)restoredSlide.getShapes().get_Item(0);
    restoredChart.getAxes().getHorizontalAxis().setAutomaticTickLabelSpacing(true);
    restoredChart.getAxes().getHorizontalAxis().setAutomaticTickMarksSpacing(true);

    presentation.save("CategoryAxisIntervals.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Espaciado automático (diapositiva 1): En esta representación, se muestra cada segunda etiqueta de categoría y se envuelve en dos líneas. El resultado automático puede variar con el tamaño del gráfico, las fuentes y el motor de renderizado.

Espaciado automático de etiquetas de categoría con las 24 columnas visibles

Espaciado manual (diapositiva 2): Cada tercera etiqueta se muestra en una línea, mientras que las marcas de graduación permanecen en cada intervalo de categoría. Las 24 columnas, incluidas las que no tienen etiquetas, permanecen visibles con los mismos valores. La diapositiva 3 restaura la apariencia automática mostrada arriba.

Intervalo manual de etiquetas de categoría de tres con las 24 columnas visibles

Elegir el eje y el intervalo correctos

Utilice este intervalo de recuento de categorías para un eje de categoría de texto, como el eje de categoría de un gráfico de columnas, líneas, áreas o barras. En un gráfico de columnas, es el eje horizontal. En un gráfico de barras horizontal, el eje de categoría es vertical, por lo que aplique estos ajustes al eje devuelto por getVerticalAxis. El espaciado de marcas de graduación también se aplica a un eje de series en los gráficos que lo tienen.

No use el espaciado de etiquetas de categoría para establecer la escala numérica de un eje de valores. En un eje de valores, setMajorUnit especifica una diferencia en valores: por ejemplo, una unidad principal de 10 produce marcas en 0, 10, 20, etc., cuando el eje comienza en cero. Un intervalo de etiquetas de categoría de 3 cuenta posiciones de categoría, independientemente de sus valores de datos. Los gráficos de dispersión y burbuja utilizan ejes de valores en lugar de un eje de categoría de texto. Para un eje de fecha, use unidades principales y escalas basadas en tiempo como se describe en Cambiar un eje de categoría.

Establecer el formato de fecha para los valores del eje de categoría

El ejemplo reemplaza los datos predeterminados del gráfico con cuatro valores anuales. Las fechas se almacenan como números de serie OLE Automation en la primera hoja de cálculo (índice 0), calculados como el número de días desde el 30 de diciembre de 1899 para estas fechas. Ambos calendarios usan UTC y se borran antes de establecer las fechas para que el horario de verano y la hora actual del día no afecten al cálculo. Utilice setCategoryAxisType con CategoryAxisType.Date, llame a setNumberFormatLinkedToSource con false y pase yyyy a setNumberFormat para que las etiquetas de categoría muestren años de cuatro dígitos independientemente del formato de la celda.

import com.aspose.slides.*;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Line, 50, 50, 450, 300);

    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    TimeZone timeZone = TimeZone.getTimeZone("UTC");
    Calendar baseDate = new GregorianCalendar(timeZone);
    baseDate.clear();
    baseDate.set(1899, Calendar.DECEMBER, 30);

    IChartSeries series = chart.getChartData().getSeries().add(ChartType.Line);
    for (int i = 0; i < 4; i++) {
        Calendar date = new GregorianCalendar(timeZone);
        date.clear();
        date.set(2015 + i, Calendar.JANUARY, 1);
        double serialDate = (date.getTimeInMillis() - baseDate.getTimeInMillis()) / 86400000.0;
        IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, serialDate);
        chart.getChartData().getCategories().add(categoryCell);

        IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, i + 1);
        series.getDataPoints().addDataPointForLineSeries(valueCell);
    }

    chart.getAxes().getHorizontalAxis().setCategoryAxisType(CategoryAxisType.Date);
    chart.getAxes().getHorizontalAxis().setNumberFormatLinkedToSource(false);
    chart.getAxes().getHorizontalAxis().setNumberFormat("yyyy");

    presentation.save("DateAxisFormat.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Establecer un ángulo de rotación para el título de un eje del gráfico

Llamar a setTitle con true en el eje vertical, proporcionar el texto del título y usar setRotationAngle para rotar el título. El ángulo se mide en grados; este ejemplo guarda un gráfico de columnas con su título del eje de valores rotado 90 grados.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
    chart.getAxes().getVerticalAxis().setTitle(true);
    chart.getAxes().getVerticalAxis().getTitle().addTextFrameForOverriding("Value");
    chart.getAxes().getVerticalAxis().getTitle().getTextFormat().getTextBlockFormat().setRotationAngle(90);

    presentation.save("RotatedAxisTitle.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Establecer la posición del eje en un eje de categoría o de valores

Utilice setAxisBetweenCategories para controlar si el eje de valores cruza el eje de categoría entre categorías o en las marcas de graduación de la categoría. Este ajuste se aplica a los ejes de categoría. El ejemplo lo establece en true en el eje de categoría horizontal de un gráfico de columnas y guarda el resultado.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
    chart.getAxes().getHorizontalAxis().setAxisBetweenCategories(true);

    presentation.save("AxisBetweenCategories.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Establecer la unidad de visualización en un eje de valores del gráfico

Utilice setDisplayUnit para escalar las etiquetas en un eje de valores sin cambiar los datos subyacentes. Con DisplayUnitType configurado en Millions, un valor de 60.000.000 se muestra como 60. El ejemplo crea un gráfico de columnas y aplica la unidad de visualización de millones a su eje vertical.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.ClusteredColumn, 50, 50, 450, 300);
    chart.getAxes().getVerticalAxis().setDisplayUnit(DisplayUnitType.Millions);

    presentation.save("Result.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Configurar un eje de valores logarítmico

Un eje de valores logarítmico es útil cuando los valores positivos abarcan varios órdenes de magnitud. Por ejemplo, un servicio podría recibir 10, 100, 1.000, 10.000 y 100.000 solicitudes en cinco períodos. En una escala lineal, los valores más pequeños aparecen muy próximos entre sí cerca de cero. Una escala logarítmica facilita comparar su crecimiento relativo: distancias iguales representan proporciones iguales en lugar de diferencias iguales.

Llamar a setLogarithmic con true en el eje de valores y usar setLogBase para elegir la base. Esto cambia cómo se muestran los valores existentes; no modifica los datos ni añade una línea de tendencia logarítmica. Una línea de tendencia representa una relación ajustada en los datos y es una característica independiente.

Elegir el eje de valores y la base

Para un gráfico de líneas o de columnas, el eje de valores se obtiene mediante getVerticalAxis. Para un gráfico de barras horizontal, se obtiene mediante getHorizontalAxis. Los gráficos de dispersión y burbuja tienen dos ejes de valores, por lo que elija el eje horizontal para los valores X, el eje vertical para los valores Y, o ambos. No aplique escalado logarítmico a un eje de categoría.

La base logarítmica predeterminada es 10. Para gráficos PPTX, use una base entre 2 y 1000, inclusive; también se admiten bases fraccionarias como 2.5. Con base 10, las potencias sucesivas como 10, 100, 1.000 y 10.000 están espaciadas de manera uniforme.

Comparar escalado lineal y logarítmico

El siguiente ejemplo autónomo crea un gráfico de líneas con los cinco recuentos de solicitudes en la primera diapositiva, luego clona esa diapositiva y habilita un eje de valores logarítmico de base 10 en la segunda. Ambas diapositivas conservan los mismos datos.

import com.aspose.slides.*;

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    IChart chart = slide.getShapes().addChart(ChartType.Line, 30, 40, 660, 200);

    chart.setLegend(false);

    chart.getChartData().getCategories().clear();
    chart.getChartData().getSeries().clear();

    IChartDataWorkbook workbook = chart.getChartData().getChartDataWorkbook();
    workbook.clear(0);

    IChartSeries series = chart.getChartData().getSeries().add(ChartType.Line);
    double[] values = { 10, 100, 1000, 10000, 100000 };

    for (int i = 0; i < values.length; i++) {
        IChartDataCell categoryCell = workbook.getCell(0, i + 1, 0, "Period " + (i + 1));
        chart.getChartData().getCategories().add(categoryCell);

        IChartDataCell valueCell = workbook.getCell(0, i + 1, 1, values[i]);
        series.getDataPoints().addDataPointForLineSeries(valueCell);
    }

    // Mantener la primera diapositiva lineal y cambiar solo la escala del eje de valores de la copia.
    ISlide logarithmicSlide = presentation.getSlides().addClone(slide);
    IChart logarithmicChart = (IChart)logarithmicSlide.getShapes().get_Item(0);
    IAxis valueAxis = logarithmicChart.getAxes().getVerticalAxis();
    valueAxis.setLogarithmic(true);
    valueAxis.setLogBase(10);

    presentation.save("LogarithmicAxis.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Escala lineal (diapositiva 1): Distancias verticales iguales representan diferencias iguales en los recuentos de solicitudes. El valor más grande domina el gráfico, dificultando distinguir los valores más pequeños.

Gráfico de líneas en PowerPoint que muestra cinco recuentos de solicitudes en un eje de valores lineal

Escala logarítmica (diapositiva 2): Distancias verticales iguales representan proporciones iguales. Cada período tiene diez veces más solicitudes que el anterior, de modo que los puntos forman una línea recta ascendente en la escala de base 10. Las etiquetas del eje siguen mostrando los recuentos de solicitudes originales.

Los mismos cinco recuentos de solicitudes en PowerPoint en un eje de valores logarítmico de base 10

Manejar valores cero y negativos

Una escala logarítmica solo puede mostrar valores estrictamente positivos. Verifique los datos antes de habilitarla. Si los valores cero o negativos son significativos, mantenga una escala lineal o muéstrelos por separado. Si excluir esos valores es apropiado para el análisis, explique la omisión. No los reemplace silenciosamente por números pequeños positivos, ya que eso cambia el significado de los datos. Cualquier mínimo o máximo configurado manualmente para un eje logarítmico también debe ser positivo.

Preguntas frecuentes

¿Cómo establezco el valor en el que un eje cruza al otro (cruce de ejes)?

Utilice setCrossType para seleccionar el comportamiento de cruce. Para especificar un valor numérico de cruce, use setCrossAt. Estas configuraciones le permiten mover el cruce del eje a una línea de base adecuada.

¿Cómo puedo posicionar las etiquetas de graduación respecto al eje?

Llamar a setTickLabelPosition usando TickLabelPositionType: Low, High, NextTo o None. Para controlar las marcas de graduación en sí, use setMajorTickMark o setMinorTickMark; estas son independientes del posicionamiento de las etiquetas.