2016-08-25 25 views
0

私は、次のデータは、配列から取得されますMPAndroidChartで時系列を処理する方法は?

Value : 50.0 at 1472112259 
Value : 49.0 at 1472112294 
Value : 50.0 at 1472112329 
Value : 50.0 at 1472112360 
Value : 50.0 at 1472112392 

MPAndroidChartライブラリに新たに導入された時系列チャートに(1000年の下で、このようなペアの任意の数とすることができる)データの次の並べ替えを追加します。 今、私はタイムスタンプでいくつかの混乱があると思う。 完全なコードは次のとおりです。 https://gist.github.com/utkarshns/e1723dcc57022fcd392bc3b127b6c898

UNIXタイムスタンプは、グラフに値を追加できたら必要な時間形式に解析されます。

現在のところ、私が直面している問題は、タイムスタンプがおそらくクリップされ、値が上書きされ、本当に奇妙なx軸値を持つ非常に混乱したグラフにつながるということです。

更新: スクリーンショット: http://imgur.com/a/dGfmz

+0

あなたはどのように見えるのスクリーンショットを投稿できますか? – TR4Android

+0

1秒、私はスクリーンショットで質問を更新します –

+0

私は最初のスクリーンショットを見ましたが、すべてが私にとってうまくいくようです。あなたが持っている問題は何ですか? – TR4Android

答えて

1

の問題は、あなたがこれらのタイムスタンプ値を持つ別のリストを必要とするので、正確ではまだ非常に大きな数字を保持することはできません値をフロートしています。 BigDecimalは大丈夫です。 距離が時間差に従うようにする。開始日から終了日まで繰り返し、保有しているタイムスタンプの数をカウントし、価値が望むタイムスタンプから数えてエントリを追加します。

Long myValues[] = {1472112259L, 1472112294L, 1472112329L, 1472112360L, 1472112392L};// your values 

    ArrayList<Entry> values = new ArrayList<>();// Entry List 
    Long start = 1472112259L;//start 
    Long end = 1472112392L;//end 
    List<BigDecimal> mList = new ArrayList<>(); //Decimal list which holds timestamps 
    int count = 0; 

    for (Long i = start; i <= end; i++) { 

     mList.add(new BigDecimal(i)); 
     if (myValues.equals(i)) { 
      values.add(new Entry(count, 50)); 
     } 
     count++;//always increment 
    } 

そして、あなたのValueFormatterは次のようになります。何か質問があるか、何かが不明である場合

AxisValueFormatter() { 

    private FormattedStringCache.Generic<Long, Date> mFormattedStringCache = new FormattedStringCache.Generic<>(new SimpleDateFormat("HH:mm:ss")); 
    @Override 
    public String getFormattedValue (float value, AxisBase axis){ 

      return mFormattedStringCache.getFormattedValue(new Date(mList.get((int)value).longValueExact()*1000), value); 
    } 

    @Override 
    public int getDecimalDigits() { 
     return 0; 
    } 
} 

は、私がお手伝いさせていただきます。

関連する問題