5

Is it possible to create a chart with fixed x and y values? My x values are like 60, 90, 120, 180, 250, 375, 500, 750, 1000, but androidplot creates 9 different values based on equal distances between the values.

Number[] timestamps = {60, 90, 120, 180, 250, 375, 500, 750, 1000};

I am using mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 9); and I guess the solution is around this command, but I do not know how to do it.

enter image description here

Full code:

mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot);
         Number[] numSightings = {70, 63, 56, 49, 43, 37, 32, 27, 23};

         Number[] timestamps = {
            60, 90, 120, 180, 250, 375, 500, 750, 1000 

         };

         // create our series from our array of nums:
         XYSeries series2 = new SimpleXYSeries(
                 Arrays.asList(timestamps),
                 Arrays.asList(numSightings),
                 "USA");


         mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE);
         mySimpleXYPlot.getGraphWidget().getGridLinePaint().setColor(Color.BLACK);
         mySimpleXYPlot.getGraphWidget().getGridLinePaint().setPathEffect(new DashPathEffect(new float[]{1,1}, 1));
         mySimpleXYPlot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK);
         mySimpleXYPlot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK);

         mySimpleXYPlot.setBorderStyle(Plot.BorderStyle.SQUARE, null, null);
         mySimpleXYPlot.getBorderPaint().setStrokeWidth(1);
         mySimpleXYPlot.getBorderPaint().setAntiAlias(false);
         mySimpleXYPlot.getBorderPaint().setColor(Color.WHITE);

         // Create a formatter to use for drawing a series using LineAndPointRenderer:
         LineAndPointFormatter series1Format = new LineAndPointFormatter(
                 Color.rgb(0, 100, 0),                   // line color
                 Color.rgb(0, 100, 0),                   // point color
                 Color.rgb(100, 200, 0));                // fill color


         // setup our line fill paint to be a slightly transparent gradient:
         Paint lineFill = new Paint();
         lineFill.setAlpha(200);
         lineFill.setShader(new LinearGradient(0, 0, 0, 250, Color.WHITE, Color.GREEN, Shader.TileMode.MIRROR));

         LineAndPointFormatter formatter  = new LineAndPointFormatter(Color.rgb(0, 0,0), Color.BLUE, Color.RED);
         formatter.setFillPaint(lineFill);
         mySimpleXYPlot.getGraphWidget().setPaddingRight(2);
         mySimpleXYPlot.addSeries(series2, formatter);

         // draw a domain tick for each year:
         mySimpleXYPlot.setDomainStep(XYStepMode.SUBDIVIDE, 9);
         mySimpleXYPlot.setRangeBoundaries(-20,100, BoundaryMode.FIXED);

         // customize our domain/range labels
         mySimpleXYPlot.setDomainLabel("Frequency (Hz)");
         mySimpleXYPlot.setRangeLabel("Loud pressure (dB)");
         mySimpleXYPlot.getLegendWidget().setVisible(false);

         // get rid of decimal points in our range labels:
         mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0"));

         //mySimpleXYPlot.setDomainValueFormat(new MyDateFormat());

         // by default, AndroidPlot displays developer guides to aid in laying out your plot.
         // To get rid of them call disableAllMarkup():
         mySimpleXYPlot.disableAllMarkup();
1
  • Any success resolving this? I have the same problem with dates on domain axis. Commented Mar 24, 2014 at 16:27

1 Answer 1

5

XYStepType.INCREMENT_BY_VALUE

This mode creates a tick for every multiple of value above and below the origin. Let's modify the Quick Start example as follows:

mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);

This tells XYPlot to draw a tick for every visible domain value (x) where the modulus of x minus domainOrigin is zero, or to put it more simply, draw a tick at every increment of 1 starting from domainOrigin. Now, our plot now looks like this:

enter image description here

From androidplot reference

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.