2017-09-12 33 views
0

私はMPAndroidChartを使用していますが、このトピックはかなりの部分がdocsでカバーされていることを知っていますので、何か不明な点がある場合は謝りますが、私のLinechartのx軸の日付にタイムスタンプの値を設定します。MPAndroidChartのx軸の日付の書式設定

何らかの理由でgetFormattedValue()がx軸の値に対して呼び出されていないようです。私がAxisBaseをデバッグした場合、カスタムフォーマッタが設定されていないy軸の値をフォーマットするように見えるだけです。ここで

は、主にGithubのドキュメントから取られ、コードスニペットです:

  LineChart chart = (LineChart) findViewById(R.id.chart); 
      XAxis xAxis = chart.getXAxis(); 

      // set min timestamp to Jul 2017 
      HourAxisValueFormatter(Long.parseLong("1499814559")); 

      xAxis.setValueFormatter(new IAxisValueFormatter() { 
      // THIS IS NEVER INVOKED! 
      @Override 
      public String getFormattedValue(float value, AxisBase axis) 
      { 
       return new Date(Long.parseLong(""+value)).toString(); 
      } 
     }); 

     // rating is a map of timestamp to numeric value, both stored 
     // as strings 
     for (Map.Entry<String, String> rating : ratings.entrySet()) { 
      String timestamp = rating.getKey(); 
      String ratingValue = rating.getValue(); 
      entries.add(new Entry(Float.parseFloat(timestamp), 
      Float.parseFloat(ratingValue))); 
     } 

      // add entries to dataset 
      LineDataSet dataSet = new LineDataSet(entries, "Ratings"); 
      LineData lineData = new LineData(dataSet); 
      chart.setData(lineData); 
      chart.invalidate(); // refresh' 

私はライブラリのバージョン3.0.2使用しています:、ゲイリーを事前に

compile 'com.github.PhilJay:MPAndroidChart:v3.0.2'

感謝を

希望の出力/実際の出力の要求ごとに編集: 理想的には、x軸に沿って一連の日付があります.e .g。 10/7、11/8、12/8など、私が提供したEpochの値から構築されています。私は、上のコードはそれが立っている形式でそれをフォーマットされていない知っているが、ちょうどそれは私のフォーマッターが呼び出されていないという問題の要点は、すべて。

以下は、現在の出力のスクリーンショットです。x = 0行に1つの値しか表示されません(複数のy値が指定されていても、同じx = 0行それだけで最後のポイントか何かを描くん):?

上記のタイムスタンプ値をデバッグ

enter image description here

、Float.parseFloat(タイムスタンプ)が1.50516885e^12に等しいです。たとえば、実際のタイムスタンプ値は1505168846751ですが、Floatへの解析後に丸められ、指数値が与えられます。

EDIT 2:LineDataSetに 'エントリ' として指定された値の

画面のグラブ:

enter image description here

EDIT 3: 問題はサイズ/フォーマットをどうするように見えます私が提供しているx値のタイムスタンプ値のうち、1.0〜20.0fの範囲の小さいfloat値に変更すると、フォーマッタが期待通りに呼び出されます。指数関数のタイムスタンプ値がフォーマットされていない理由を調べるために、コードをさらにデバッグする必要があります。

+0

あなたのコードから必要な出力と出力を共有してください。 –

+0

こんにちは@MehulKabaria、私はそこにいくつかの情報を提供しました、うまくいけば理にかなっています。私が詳細を提供できるかどうか教えてください。画像のサイズに対する謝罪、現時点ではズームがクラッシュしていますが、私は考えていると思います:) –

+0

タイムスタンプからどのような日付形式が必要ですか? –

答えて

0

エントリが浮動小数点値だけを受け入れるので、この特定のユースケース(タイムスタンプは非常に近い)のため、これは現在のところ制限されていると思うから、私のタイムスタンプはすべて1.50516885e^12正確なタイムスタンプの値はわずかに異なります。 AxisRendererがx軸の範囲を計算すると、0と見なされ、このブロック内のエントリも0に設定されます。here