Android plot fixed values on x angle
android, androidplot
Solution
`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:
From androidplot reference
Problem
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. 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(); ```