user1955086
user1955086

Reputation: 141

Line chart with custom y axis space issue in android

I am developing line chart using achartengine 1.1.0.jar.

I am facing one issue when my final line chart is drawn.

The y axis labels drawn without vertical space between labels and all labels drawn together.

I have attached screen shot of my line chart drawn.

line chart

Here i am also attaching snippet code with it.

package com.example.simplelinecharexample;

import org.achartengine.ChartFactory;
import org.achartengine.GraphicalView;
import org.achartengine.chart.PointStyle;
import org.achartengine.model.XYMultipleSeriesDataset;
import org.achartengine.model.XYSeries;
import org.achartengine.renderer.XYMultipleSeriesRenderer;
import org.achartengine.renderer.XYMultipleSeriesRenderer.Orientation;
import org.achartengine.renderer.XYSeriesRenderer;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.widget.LinearLayout;

public class main extends Activity { private GraphicalView mChart;

private String[] mMonth = new String[] { "Jan", "Feb", "Mar", "Apr", "May",
        "Jun",

        "Jul", "Aug" };
private String[] mweek = new String[] { "Mon", "Tue", "Wed", "Thu", "Fri",
        "Sat",

        "Sun" };
private String[] steps = new String[31];

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    for (int i = 0; i <= 15; i++)
        if (i == 0)
            steps[i] = String.valueOf(0);
        else
            steps[i] = String.valueOf(Integer.parseInt(steps[i - 1]) + 2000);
    OpenChart();
}

private void OpenChart() {
    int z[] = { 0, 1, 2, 3, 4, 5, 6, 7};
//  int x[] = { 10, 18, 32, 21, 48, 60, 53, 80 };
  int[] income = { 2000, 2500, 2700, 3000, 2800, 3500,5000 , 15000};
    XYSeries xSeries = new XYSeries("X Series");
    for (int i = 0; i < z.length; i++) {
        xSeries.add(z[i], income[i]);
    }
    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(xSeries);

    XYSeriesRenderer Xrenderer = new XYSeriesRenderer();
    Xrenderer.setColor(Color.RED);
    Xrenderer.setPointStyle(PointStyle.DIAMOND);
    Xrenderer.setDisplayChartValues(true);
    Xrenderer.setLineWidth(5);
    Xrenderer.setFillPoints(true);

    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();

    mRenderer.setChartTitle("X Vs Y Chart");`enter code here`
    mRenderer.setXTitle("X Values");
    mRenderer.setYTitle("Y Values");
    mRenderer.setXLabels(0);![enter image description here][2]
    mRenderer.setShowGrid(true);
    mRenderer.setYLabels(49);

    for (int i = 0; i < mweek.length; i++) {
        mRenderer.addXTextLabel(i, mweek[i]);
    }
    mRenderer.addSeriesRenderer(Xrenderer);
    mRenderer.setXLabelsAlign(Align.LEFT);
    mRenderer.setYLabelsAlign(Align.RIGHT);
    mRenderer.setLabelsTextSize(20);
    mRenderer.setYAxisMin(0);
    mRenderer.setXAxisMin(-1);
    mRenderer.setYAxisMax(98000);
    mRenderer.setPanEnabled(false, true);
    mRenderer.setPanLimits(new double[]{0.0,Double.MAX_VALUE,0.0,98000});
    mRenderer.setZoomEnabled(true, false);
    mRenderer.setAntialiasing(true);

    mRenderer.setMargins(new int[] { 60, 120, 60, 60 });
    LinearLayout chart_container = (LinearLayout) findViewById(R.id.Chart_layout);
    mChart = (GraphicalView) ChartFactory.getLineChartView(
            getBaseContext(), dataset, mRenderer);

    chart_container.addView(mChart);
}

}

I want add vertical space between y axis labels and it should auto scrollable.

Upvotes: 0

Views: 515

Answers (1)

himen patel
himen patel

Reputation: 404

Just replace your line mRenderer.setYLabels(49);

to

mRenderer.setYLabels(10);

When you decrease the size of SetYlabels it will increase the space between Y labels.

Enjoy...

Upvotes: 1

Related Questions