2016-05-27 8 views
0

enter image description here Meine App erfordert, dass die Y-Achse Strings wie 'Laden', 'Entladen' und 'Laden fehlgeschlagen' hat. Ist es möglich, einen Graphen damit zu plotten und den betreffenden Parameter in Übereinstimmung mit diesen Strings auf Android Plot darzustellen?Android-Plot für String-Parameter

+0

Es ist nicht klar, was Sie mit "dargestellt" meinen. Gibt es ein tatsächliches Bild, das jeden Staat repräsentiert? Ohne mehr zu wissen, klingt dies wie ein perfekter Anwendungsfall für die Verwendung des Step-Chart-Stils. – Nick

+0

Hallo @Nick, die Zustände werden aus einer CSV-Datei gelesen und sind wie in der Bearbeitung gezeigt. – AR06

Antwort

0

ich noch nicht zu 100% sicher bin, verstehe ich die gewünschte Visualisierung aber hier sind die grundlegenden Schritte, die ich vorschlagen würde:

zu starten, Sie gehen zu müssen, Ihre CSV-Daten in zu XYSeries konvertieren Daten. Um dies zu erreichen, müssen Sie Ihre aktuellen X/Y-String-Werte zu Zahlen zuordnen. Ich würde vorschlagen, ein Verfahren zu schaffen, die etwa wie folgt aussieht:

// parses a CSV string into an XYSeries 
// for example, DISCHARGE = 1, MPPT = 2 
public XYSeries convertCSVToXYSeries(String csvContent) {...} 

Als nächste Einrichtung Ihres Plot usw. so ziemlich die gleiche Art und Weise würden Sie für andere XYPlot wie im Androidplot Quickstart Tutorial gezeigt.

Wenn Sie die XYSeries Sie wieder von convertCSVToXYSeries zu Ihrem Grundstück erhalten hinzuzufügen, verwenden Sie einen XYStepFormatter:

StepFormatter stepFormatter = new StepFormatter(Color.BLUE, Color.BLUE); 
stepFormatter.setVertexPaint(null); // don't draw individual points 
plot.addSeries(series, stepFormatter); 

Schließlich fügen Wert benutzerdefinierten Bereich Formatierer Ihren Status Strings anstelle der int-Werte drucken sie haben wurde gemappt:

 // create a custom getFormatter to draw our state names as range tick labels: 
     plot.setRangeValueFormat(new Format() { 
      @Override 
      public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos) { 
       Number num = (Number) obj; 
       switch(num.intValue()) { 
        case 1: 
         toAppendTo.append("DISCHARGE"); 
         break; 
        case 2: 
         toAppendTo.append("MPPT"); 
         break;      
        default: 
         toAppendTo.append("Unknown"); 
         break; 
       } 
       return toAppendTo; 
      } 

      @Override 
      public Object parseObject(String source, ParsePosition pos) { 
       return null; 
      } 
     }); 
Verwandte Themen