2013-03-16 15 views
5

Ich bin neu in dieser Bibliothek. Ich versuche, die folgende Handlung zu erstellen:Androidplot - Hintergrund und Bereiche

enter image description here

Inzwischen habe ich die nächste:

enter image description here

Meine Fragen: Hinweis: Um die Farben nicht Angelegenheiten

  1. Wie d o Ich werde den schwarzen Bereich los (wo war Etiketten Bereich Bereich und Titel) und zentrieren Sie die Handlung (wie im ersten Bild)

  2. Wie Bereiche wie im ersten Bild hinzufügen? (X: [1-7] y: [0-4500])

  3. Stellen das gleiche Raster wie in dem ersten Bild

My Code:

public class MainActivity extends Activity { 

private XYPlot mySimpleXYPlot; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

// Create a couple arrays of y-values to plot: 
    Number[] days = { 1 , 2 , 3 , 4 , 5 , 6 , 7 }; 
    Number[] values = { 380, 1433, 1965, 3200, 3651, 3215, 3217 }; 

    // initialize our XYPlot reference: 
    mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 
    mySimpleXYPlot.getBackgroundPaint().setColor(Color.WHITE); 
    mySimpleXYPlot.setBorderStyle(XYPlot.BorderStyle.NONE, null, null); 
    mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE); 
    mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); 



    // Domain 
    mySimpleXYPlot.getGraphWidget().setDomainLabelPaint(null); 
    mySimpleXYPlot.getGraphWidget().setDomainOriginLinePaint(null); 
    mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, days.length);  
    mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0")); 


    //Range 
    mySimpleXYPlot.getGraphWidget().setRangeOriginLinePaint(null); 
    mySimpleXYPlot.setRangeStep(XYStepMode.SUBDIVIDE, values.length); 
    mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0")); 


    //Remove legend 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getLegendWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getDomainLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getRangeLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getTitleWidget()); 

    // Turn the above arrays into XYSeries': 
    XYSeries series1 = new SimpleXYSeries(
      Arrays.asList(days),   
      Arrays.asList(values), 
      "Series1");        // Set the display title of the series 

    // Create a formatter to use for drawing a series using LineAndPointRenderer: 
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
      Color.rgb(0, 200, 0),     // line color 
      Color.rgb(0, 100, 0),     // point color 
      Color.CYAN);       // 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)); 

    series1Format.setFillPaint(lineFill); 

    // add a new series' to the xyplot: 
    mySimpleXYPlot.addSeries(series1, series1Format); 

    // by default, AndroidPlot displays developer guides to aid in laying out your plot. 
    // To get rid of them call disableAllMarkup(): 
    mySimpleXYPlot.disableAllMarkup(); 
} 

} 
+0

sein sollte ich herausfinden, ich versuche, wie Sie die x entfernt -Achsenlinien aus dem Raster in Ihrem unvollständigen. – prometheuspk

Antwort

14

I hoffe das ist hilfreich.

Mein Code:

private XYPlot mySimpleXYPlot; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    // Create a couple arrays of y-values to plot: 
    Number[] days = { 1 , 2 , 3 , 4 , 5 , 6 , 7 }; 
    Number[] values = { 380, 1433, 1965, 3200, 3651, 3215, 3217 }; 

    // initialize our XYPlot reference: 
    mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 

    mySimpleXYPlot.setBorderStyle(Plot.BorderStyle.NONE, null, null); 
    mySimpleXYPlot.setPlotMargins(0, 0, 0, 0); 
    mySimpleXYPlot.setPlotPadding(0, 0, 0, 0); 
    mySimpleXYPlot.setGridPadding(0, 10, 5, 0); 

    mySimpleXYPlot.setBackgroundColor(Color.WHITE); 

    mySimpleXYPlot.position(
      mySimpleXYPlot.getGraphWidget(), 
      0, 
      XLayoutStyle.ABSOLUTE_FROM_LEFT, 
      0, 
      YLayoutStyle.RELATIVE_TO_CENTER, 
      AnchorPosition.LEFT_MIDDLE); 

    mySimpleXYPlot.getGraphWidget().getBackgroundPaint().setColor(Color.WHITE); 
    mySimpleXYPlot.getGraphWidget().getGridBackgroundPaint().setColor(Color.WHITE); 

    mySimpleXYPlot.getGraphWidget().getDomainLabelPaint().setColor(Color.BLACK); 
    mySimpleXYPlot.getGraphWidget().getRangeLabelPaint().setColor(Color.BLACK); 

    mySimpleXYPlot.getGraphWidget().getDomainOriginLabelPaint().setColor(Color.BLACK); 
    mySimpleXYPlot.getGraphWidget().getDomainOriginLinePaint().setColor(Color.BLACK); 
    mySimpleXYPlot.getGraphWidget().getRangeOriginLinePaint().setColor(Color.BLACK); 

    // Domain 
    mySimpleXYPlot.setDomainStep(XYStepMode.INCREMENT_BY_VAL, days.length);  
    mySimpleXYPlot.setDomainValueFormat(new DecimalFormat("0")); 
    mySimpleXYPlot.setDomainStepValue(1); 

    //Range 
    mySimpleXYPlot.setRangeBoundaries(0, 4500, BoundaryMode.FIXED); 
    mySimpleXYPlot.setRangeStepValue(10); 
    //mySimpleXYPlot.setRangeStep(XYStepMode.SUBDIVIDE, values.length); 
    mySimpleXYPlot.setRangeValueFormat(new DecimalFormat("0")); 

    //Remove legend 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getLegendWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getDomainLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getRangeLabelWidget()); 
    mySimpleXYPlot.getLayoutManager().remove(mySimpleXYPlot.getTitleWidget()); 

    // Turn the above arrays into XYSeries': 
    XYSeries series1 = new SimpleXYSeries(
      Arrays.asList(days),   
      Arrays.asList(values), 
      "Series1");        // Set the display title of the series 

    // Create a formatter to use for drawing a series using LineAndPointRenderer: 
    LineAndPointFormatter series1Format = new LineAndPointFormatter(
      Color.rgb(0, 200, 0),     // line color 
      Color.rgb(0, 100, 0),     // point color 
      Color.CYAN);       // 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)); 

    series1Format.setFillPaint(lineFill); 

    // add a new series' to the xyplot: 
    mySimpleXYPlot.addSeries(series1, series1Format); 

    // by default, AndroidPlot displays developer guides to aid in laying out your plot. 
    // To get rid of them call disableAllMarkup(): 
    mySimpleXYPlot.disableAllMarkup(); 
} 

}

Es wird wie folgt aussehen:

graph

+0

Hey ich möchte ein Diagramm zeichnen, die wie dieses –

+0

aussieht, ist dies möglich, wie diese Daten: image/jpeg; base64, iVBORw0KGgoAAAANSUhEUgAAA4YAAAJ1CAYAAACFAu4OAAAgAElEQVR4XuydB5gUVdaGv6runhwYGDKKcRXFrKAoSDAhrrImxBww7SqmXVF0/UUwrQkj6wKmXVExuyoqill0RcwKqEiOQ5g8Pd1V93/OuVXdNT3dMz2BSX1qF6dnuuqG996q5351zj3HyMvLU + hgx477TU2uR9Rzg061AZiRa2wDMJX + qgYcwwZU9LzkKpGzhIAQaH8E6JlATwB + QDgHPRSU81Cg50DN50ZyfTSg + H8GDKVgchUGLHoCKQXD0HUqRWXTV/Sd4mp1S2zPg8l9Qpn8nKIy9Se6MNlnla4nWmi0zOT6U9dZulXeZ6t7tvuMbXodwO9fX9kcxUgZQkAICAEhIARSnoCR0sKwjuG3DRsmi0C9 + ItoyJSfMgJACHRsAjZsmLVEoZY4UZlT67WRAyWRWNQCzFYGiz3TMGDbNpTSQs406Rnj/O6co0wTsGyYrB6j5fJ5/FSi51PNJ1OkVY4w1N8maqsuleuP6Z13hL09qinotHi2nRr – Prasad

12

In der neuesten Version, statt

mySimpleXYPlot.position(
     mySimpleXYPlot.getGraphWidget(), 
     0, 
     XLayoutStyle.ABSOLUTE_FROM_LEFT, 
     0, 
     YLayoutStyle.RELATIVE_TO_CENTER, 
     AnchorPosition.LEFT_MIDDLE); 
mit

sie verwendet werden:

mySimpleXYPlot.getGraphWidget().setSize(new SizeMetrics(
      0, SizeLayoutType.FILL, 
      0, SizeLayoutType.FILL)); 

Dies wird in den schwarzen Bereich beseitigen.

1

Dies wird für die neuen Geräte arbeiten:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    plot.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
} 
1
// Create a formatter to use for drawing a series using LineAndPointRenderer: 
LineAndPointFormatter series1Format = new LineAndPointFormatter(
     Color.rgb(0, 200, 0),     // line color 
     Color.rgb(0, 100, 0),     // point color 
     Color.CYAN); 

Argument

fehlt es so

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