2016-11-30 11 views
1

グラフ上の2点間に中央揃えのカスタムテキストを表示することはできますか?MPAndroidChartグラフの水平線上にラベルを表示

私はMPAndroidChartセットアップで、水平および垂直の線だけを使ってステップ関数タイプのグラフ(特定の作業を行う時間を表す)を表示するようにしました。私ができることをしたいのは、セクションのサイズを示す横のセクション(別名、x値の差を取って計算した時間)にラベルを付けることです。これを行う方法はありますか?私はライブラリを修正する方法を検討してきましたが、正しい場所がどこになるのかわかりません。

BarLineChartBase onDraw()メソッドまたは多分LineChartRenderer drawLinear()メソッドでいくつかの変更があります。ここで

は私が生産することができる午前です:ここで

current graph

は私が作るしようとしているものの例である:

example graph

答えて

1

はそれを考え出しました! drawDescription()の直後に、onDraw()の最後のLineChartクラスに新しいメソッドdrawTime()を追加するだけです。各水平ラインが一度に2つのエントリを介してI単にループ2つのエントリポイントによって記述されているので、私の単一のデータセットとの差を計算するために:

protected void drawTime(Canvas c) 
{ 
    Paint timePaint = new Paint(Paint.ANTI_ALIAS_FLAG); 

    timePaint.setTextSize(Utils.convertDpToPixel(16)); 
    timePaint.setColor(Color.BLUE); 
    timePaint.setTextAlign(Paint.Align.CENTER); 

    MPPointD position; 

    LineData data = this.getLineData(); 
    ILineDataSet dataSet = data.getDataSetByIndex(0); 
    for (int i = 1; i < dataSet.getEntryCount(); i+=2) 
    { 
     Entry e1 = dataSet.getEntryForIndex(i-1); 
     Entry e2 = dataSet.getEntryForIndex(i); 

     float time = e2.getX() - e1.getX(); 
     position = getPixelForValues(e1.getX() + time/2, e1.getY() - 0.05f, YAxis.AxisDependency.LEFT); 
     c.drawText(String.valueOf(time), (float)position.x, (float)position.y, timePaint); 
    } 
} 

得られたグラフをlooks like this

関連する問題