Los gráficos de columnas no muestran valores negativos en aplicaciones de Android e iOS

Resuelto Mert Özoğul asked hace 54 años • 0 respuestas

Tenemos una membresía paga de 1 año para anychart y usamos gráficos de columnas en mis pantallas. Pero queremos mostrar valores negativos en columnas como se muestra a continuación: ingrese la descripción de la imagen aquí

Pero nuestros valores negativos se muestran como valor cero como se muestra a continuación:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Cuando mostramos valores negativos, el eje x se desplaza hacia arriba. No se ha escrito ningún código adicional para mostrar valores negativos en gráficos escritos en JavaScript. No podemos mostrar valores negativos en aplicaciones de Android e iOS. ¿Puede compartir un bloque de código de muestra de Java o Swift donde podamos mostrar valores negativos en un gráfico de columnas?

Usamos el siguiente código de github. Le agradecería que pudiera hacer correcciones al código siguiente. https://github.com/AnyChart/AnyChart-Android/blob/master/sample/src/main/java/com/anychart/sample/charts/ColumnChartActivity.java

package com.anychart.sample.charts;

import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;

import com.anychart.AnyChart;
import com.anychart.AnyChartView;
import com.anychart.chart.common.dataentry.DataEntry;
import com.anychart.chart.common.dataentry.ValueDataEntry;
import com.anychart.charts.Cartesian;
import com.anychart.core.cartesian.series.Column;
import com.anychart.enums.Anchor;
import com.anychart.enums.HoverMode;
import com.anychart.enums.Position;
import com.anychart.enums.TooltipPositionMode;
import com.anychart.sample.R;

import java.util.ArrayList;
import java.util.List;

public class ColumnChartActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_chart_common);

        AnyChartView anyChartView = findViewById(R.id.any_chart_view);
        anyChartView.setProgressBar(findViewById(R.id.progress_bar));

        Cartesian cartesian = AnyChart.column();

        List<DataEntry> data = new ArrayList<>();
        data.add(new ValueDataEntry("Column 1", 48));
        data.add(new ValueDataEntry("Column 2", -45));
        data.add(new ValueDataEntry("Column 3", 26));
        data.add(new ValueDataEntry("Column 4", 11));
        data.add(new ValueDataEntry("Column 5", 12));
        data.add(new ValueDataEntry("Column 6", 60));
        data.add(new ValueDataEntry("Column 7", -30));
        data.add(new ValueDataEntry("Column 8", 50));
        data.add(new ValueDataEntry("Column 9", 60));

        Column column = cartesian.column(data);

        column.tooltip()
                .titleFormat("{%X}")
                .position(Position.CENTER_BOTTOM)
                .anchor(Anchor.CENTER_BOTTOM)
                .offsetX(0d)
                .offsetY(5d)
                .format("${%Value}{groupsSeparator: }");

        cartesian.animation(true);
        cartesian.title("Top 10 Cosmetic Products by Revenue");

        cartesian.yScale().minimum(0d);

        cartesian.yAxis(0).labels().format("${%Value}{groupsSeparator: }");

        cartesian.tooltip().positionMode(TooltipPositionMode.POINT);
        cartesian.interactivity().hoverMode(HoverMode.BY_X);

        cartesian.xAxis(0).title("Product");
        cartesian.yAxis(0).title("Revenue");

        anyChartView.setChart(cartesian);
    }
}

Gracias por tus sugerencias.

Mert Özoğul avatar Jan 01 '70 08:01 Mert Özoğul
Aceptado

Para que el eje Y de su gráfico muestre valores negativos, puede especificar sus valores mínimo y máximo .

// Set yScale's minimum and maximum values to show negative values
cartesian.yScale().minimum(-100).maximum(100);

En cuanto al cambio de posición del eje X, no es posible trasladarlo al centro.
Sin embargo, es posible imitar el eje con una línea horizontal personalizada.

// Create a line marker for the centered axis line
Cartesian line = cartesian.lineMarker(2, "{stroke: 'lightgrey'}");

Entonces todo lo que tienes que hacer es desactivar el eje X predeterminado.

// Disable the default xAxis
cartesian.xAxis(0).enabled(false);

Al final, tendrás un gráfico similar:ingrese la descripción de la imagen aquí

En caso de que necesite información más detallada, consulte la documentación y la referencia de API
Líneas de marcador Referencia de API Documentos
de líneas de marcador

AnyChart Support avatar Feb 20 '2024 11:02 AnyChart Support