6

i am working achartengine on android and completed all works i have face one problem in line chart i mention the xaxis label but it's shows like 2,4,6,8,10,12 and so on with overlay with my xaxis label and i want to hide 2,4,6,8,10,12 labels in xaxis. if u don't understand see given below figure:

enter image description here

here is the full code:

public class ChartExample extends Activity {
    private GraphicalView mChartView;

    XYMultipleSeriesRenderer renderer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_chart);

        LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout2);

        String[] titles = new String[] { "spens1","2second" };
        List<double[]> x = new ArrayList<double[]>();
        x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
        x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
        // }
        List<double[]> values = new ArrayList<double[]>();
        values.add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13,
                        10 });
        values.add(new double[] { 11, 13, 21, 10, 40, 10, 12,15, 24, 20, 15,
                12 });


        int[] colors = new int[] { Color.BLUE,Color.RED};
        PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.CIRCLE};

        renderer = buildRenderer(colors, styles);

        int length = renderer.getSeriesRendererCount();
        for (int i = 0; i < length; i++) {
            ((XYSeriesRenderer) renderer.getSeriesRendererAt(i))
                    .setFillPoints(true);
        }

        setChartSettings(renderer, "SCORE CARD VIEW", "Attetempts",
                "Marks Scored", 0, 12.5, 0, 45, Color.LTGRAY, Color.LTGRAY);
        renderer.setXLabels(12);
        renderer.setYLabels(10);
        renderer.setShowGrid(false);
        renderer.setXLabelsAlign(Align.CENTER);
        renderer.setYLabelsAlign(Align.CENTER);

        //renderer.setZoomButtonsVisible(true);
        //renderer.setPanLimits(new double[] { 0, 20, 0, 40 });
        //renderer.setZoomLimits(new double[] { 0, 20, 0, 40 });
        renderer.setPanEnabled(false, false);
        renderer.setZoomEnabled(false, false);
        renderer.setShowLegend(false);       


        for(int k=0;k<12;k++)
        {
            renderer.addXTextLabel(k+1,"test");
        }

        if (mChartView == null) 
        {
            Log.d("Oncreate ", "if (mChartView == null)");
            mChartView = ChartFactory.getLineChartView(this, mDataset(titles,
                    x, values), renderer);
            layout.addView(mChartView, new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));




        } 
        else 
        {
            mChartView.repaint();
            Log.d("Oncreate ", "if (mChartView != null)");
        }
    }

    private void setChartSettings(XYMultipleSeriesRenderer renderer3,
            String title, String xTitle, String yTitle, double xMin,
            double xMax, double yMin, double yMax, int axesColor,
            int labelsColor) {
        // TODO Auto-generated method stub

        renderer3.setChartTitle(title);
        renderer3.setXTitle(xTitle);
        renderer3.setYTitle(yTitle);
        renderer3.setXAxisMin(xMin);
        renderer3.setXAxisMax(xMax);
        renderer3.setYAxisMin(yMin);
        renderer3.setYAxisMax(yMax);
        renderer3.setAxesColor(axesColor);
        renderer3.setLabelsColor(labelsColor);
    }

    private XYMultipleSeriesRenderer buildRenderer(int[] colors,
            PointStyle[] styles) {
        // TODO Auto-generated method stub
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        setRenderer(renderer, colors, styles);
        return renderer;
    }

    private void setRenderer(XYMultipleSeriesRenderer renderer2, int[] colors,
            PointStyle[] styles) {
        // TODO Auto-generated method stub
        renderer2.setAxisTitleTextSize(16);
        renderer2.setChartTitleTextSize(20);
        renderer2.setLabelsTextSize(15);
        renderer2.setLegendTextSize(15);
        renderer2.setPointSize(5f);
        renderer2.setMargins(new int[] { 20, 30, 15, 20 });
        int length = colors.length;
        for (int i = 0; i < length; i++) {
            XYSeriesRenderer r = new XYSeriesRenderer();
            r.setColor(colors[i]);
            r.setPointStyle(styles[i]);
            renderer2.addSeriesRenderer(r);
        }
    }

    private XYMultipleSeriesDataset mDataset(String[] titles,
            List<double[]> xValues, List<double[]> yValues) {
        // TODO Auto-generated method stub
        XYMultipleSeriesDataset dataset1 = new XYMultipleSeriesDataset();
        addXYSeries(dataset1, titles, xValues, yValues, 0);
        return dataset1;
    }

    private void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
            List<double[]> xValues, List<double[]> yValues, int scale) {
        // TODO Auto-generated method stub

        int length = titles.length;
        for (int i = 0; i < length; i++) {


            double[] xV = xValues.get(i);
            XYSeries series = new XYSeries(titles[i], scale);
            double[] yV = yValues.get(i);
            int seriesLength = xV.length;
            for (int k = 0; k < seriesLength; k++) {
                    series.add(xV[k], yV[k]);
            }
            dataset.addSeries(series);
        }



    }

}

can you help me with greatly appreciated.

Stack Overflow User
  • 4,052
  • 6
  • 29
  • 47

2 Answers2

7

finally i got solution i have try this code below:

renderer.setXLabels(0);

and full class code here:

package com.example.lockexample;

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

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.XYSeriesRenderer;

import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint.Align;
import android.os.Bundle;
import android.util.Log;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class ChartExample extends Activity {
    private GraphicalView mChartView;

    XYMultipleSeriesRenderer renderer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.layout_chart);

        LinearLayout layout = (LinearLayout) findViewById(R.id.linearLayout2);

        String[] titles = new String[] { "spens1","2second" };
        List<double[]> x = new ArrayList<double[]>();
        x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
        x.add(new double[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 });
        // }
        List<double[]> values = new ArrayList<double[]>();
        values.add(new double[] { 9, 10, 11, 15, 19, 23, 26, 25, 22, 18, 13,
                        10 });
        values.add(new double[] { 11, 13, 21, 10, 40, 10, 12,15, 24, 20, 15,
                12 });


        int[] colors = new int[] { Color.BLUE,Color.RED};
        PointStyle[] styles = new PointStyle[] { PointStyle.CIRCLE,PointStyle.CIRCLE};

        renderer = buildRenderer(colors, styles);

        int length = renderer.getSeriesRendererCount();
        for (int i = 0; i < length; i++) {
            ((XYSeriesRenderer) renderer.getSeriesRendererAt(i))
                    .setFillPoints(true);
        }

        setChartSettings(renderer, "SCORE CARD VIEW", "Attetempts",
                "Marks Scored", 0, 12.5, 0, 45, Color.LTGRAY, Color.LTGRAY);
        //renderer.setXLabels(12);
        renderer.setYLabels(10);
        renderer.setXLabels(0);
        renderer.setShowGrid(true);
        renderer.setXLabelsAlign(Align.CENTER);
        renderer.setYLabelsAlign(Align.RIGHT);
        renderer.setMargins(new int[] { 25,35, 10, 15 });
        //renderer.setZoomButtonsVisible(true);
        //renderer.setPanLimits(new double[] { 0, 20, 0, 40 });
        //renderer.setZoomLimits(new double[] { 0, 20, 0, 40 });
        renderer.setPanEnabled(false, false);
        renderer.setZoomEnabled(false, false);

        renderer.setMarginsColor(Color.parseColor("#EEEDED"));
        renderer.setXLabelsColor(Color.BLACK);
        renderer.setYLabelsColor(0,Color.BLACK);

        renderer.setApplyBackgroundColor(true);
        renderer.setBackgroundColor(Color.parseColor("#FBFBFC"));
        //renderer.setShowLegend(false);       


        for(int k=0;k<12;k++)
        {
            renderer.addXTextLabel(k+1,"test");
        }

        if (mChartView == null) 
        {
            Log.d("Oncreate ", "if (mChartView == null)");
            mChartView = ChartFactory.getLineChartView(this, mDataset(titles,
                    x, values), renderer);
            layout.addView(mChartView, new LayoutParams(
                    LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));




        } 
        else 
        {
            mChartView.repaint();
            Log.d("Oncreate ", "if (mChartView != null)");
        }
    }

    private void setChartSettings(XYMultipleSeriesRenderer renderer3,
            String title, String xTitle, String yTitle, double xMin,
            double xMax, double yMin, double yMax, int axesColor,
            int labelsColor) {
        // TODO Auto-generated method stub

        renderer3.setChartTitle(title);
        renderer3.setXTitle(xTitle);
        renderer3.setYTitle(yTitle);
        renderer3.setXAxisMin(xMin);
        renderer3.setXAxisMax(xMax);
        renderer3.setYAxisMin(yMin);
        renderer3.setYAxisMax(yMax);
        renderer3.setAxesColor(axesColor);
        renderer3.setLabelsColor(labelsColor);

    }

    private XYMultipleSeriesRenderer buildRenderer(int[] colors,
            PointStyle[] styles) {
        // TODO Auto-generated method stub
        XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
        setRenderer(renderer, colors, styles);
        return renderer;
    }

    private void setRenderer(XYMultipleSeriesRenderer renderer2, int[] colors,
            PointStyle[] styles) {
        // TODO Auto-generated method stub
        renderer2.setAxisTitleTextSize(16);
        renderer2.setChartTitleTextSize(20);
        renderer2.setLabelsTextSize(15);
        renderer2.setLegendTextSize(15);
        renderer2.setPointSize(5f);
        //renderer2.setMargins(new int[] { 20, 30, 15, 20 });
        renderer2.setMargins(new int[] { 25,35, 10, 15 });

        int length = colors.length;
        for (int i = 0; i < length; i++) {
            XYSeriesRenderer r = new XYSeriesRenderer();
            r.setColor(colors[i]);
            r.setPointStyle(styles[i]);
            renderer2.addSeriesRenderer(r);
        }
    }

    private XYMultipleSeriesDataset mDataset(String[] titles,
            List<double[]> xValues, List<double[]> yValues) {
        // TODO Auto-generated method stub
        XYMultipleSeriesDataset dataset1 = new XYMultipleSeriesDataset();
        addXYSeries(dataset1, titles, xValues, yValues, 0);
        return dataset1;
    }

    private void addXYSeries(XYMultipleSeriesDataset dataset, String[] titles,
            List<double[]> xValues, List<double[]> yValues, int scale) {
        // TODO Auto-generated method stub

        int length = titles.length;
        for (int i = 0; i < length; i++) {


            double[] xV = xValues.get(i);
            XYSeries series = new XYSeries(titles[i], scale);
            double[] yV = yValues.get(i);
            int seriesLength = xV.length;
            for (int k = 0; k < seriesLength; k++) {
                    series.add(xV[k], yV[k]);
            }
            dataset.addSeries(series);
        }



    }

}
Stack Overflow User
  • 4,052
  • 6
  • 29
  • 47
-1

The only code you need to add to your current code is the following two lines:

renderer.setXLabels(RESULT_OK);
renderer.clearXTextLabels();

Make sure to add these statements after you declare your renderer settings, but BEFORE the code where you set your custom X-axis text labels.

Since you have multiple renderer methods going on in your program, you should include those two lines of code at the end of your methods that implement an XYMultipleSeriesRenderer. Again, make sure to add this in your code before you implement your custom text labels. :)

jillianjiggs
  • 201
  • 1
  • 3
  • 7