2012-05-26 10 views
5

È possibile creare un grafico con valori xey fissi? I miei valori x sono come 60, 90, 120, 180, 250, 375, 500, 750, 1000, ma androidplot crea 9 valori diversi basati su distanze uguali tra i valori.Valori fissi del diagramma Android sull'angolo x

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

Sto usando mySimpleXYPlot.setDomainStep (XYStepMode.SUBDIVIDE, 9); e credo che la soluzione sia intorno a questo comando, ma non so come farlo.

enter image description here

codice completo:

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(); 
+0

Qualsiasi successo risolvere questo? Ho lo stesso problema con le date sull'asse dei domini. – blackwolf

risposta

5

XYStepType.INCREMENT_BY_VALUE

Questa modalità crea un segno di spunta per ogni multiplo di valore sopra e sotto l'origine. Andiamo a modificare l'esempio di avvio rapido come segue:

mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, 1);

Questo dice XYPlot per disegnare un segno di spunta per ogni valore di dominio visibile (x), dove il modulo di x meno domainOrigin è pari a zero, o per dirla più semplicemente , fai un segno di spunta ad ogni incremento di 1 a partire da domainOrigin. Ora, la nostra trama ora appare così:

enter image description here

Da androidplot reference

Problemi correlati