MPAndroidChartで描いた線グラフに、指定した値を強調する線(Limit Line)を引いてみる

MPAndroidChartで描いた線グラフで、Y軸のある値を強調した補助線を引きたいと思ったので、やり方をメモ。

ここで作成したMaingActivity.javaに、次の記述を追加する。
LineDataSet valueDataSet = new LineDataSet(value, "sample");
dataSets.add(valueDataSet);

// 追加ここから
// Limit Lineを設ける
YAxis yAxis = lineChart.getAxisLeft();
LimitLine ll= new LimitLine(250f, "This is a limit line");
ll.setLineColor(Color.MAGENTA); // Limit Lineの色
ll.setLineWidth(4f); // Limit Lineの太さ
ll.setTextSize(10f); // テキストサイズ
yAxis.addLimitLine(ll);

LineData data = new LineData(xValues, dataSets);
lineChart.setData(new LineData(xValues, dataSets));



するとこのような線グラフが描ける。

LineChartSampleWithLimitLine.jpg
posted by へっぽ at 01:21 | TrackBack(0) | Android | このブログの読者になる | 更新情報をチェックする

ローカルファイルの書き込み/読み込み

Androidのデータ保存方式にローカルファイルがある。

例えばEditTextの内容をローカルファイルに書き込むときは、次のようなコードとなる。

EditText et = (EditText) findViewById(R.id.et);

try {
    // EditText の値をローカルファイルに書き込む
    OutputStream os = openFileOutput("sample.txt", MODE_APPEND);
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(os, "UTF-8"));
    pw.append(et.getText().toString() + "\n");
    pw.close();

}catch (IOException ie) {
    ie.printStackTrace();

}

また、作成したローカルファイルを読み込んで、TextViewに表示する場合などは、次のようなコードとなる。

TextView tv = (TextView) findViewById(R.id.tv);

try {
    // ローカルファイルを読み込み、TextViewに表示する
    InputStream is = openFileInput("sample.txt");
    BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
    String str = null;

    while((str = br.readLine()) != null) {
        tv.append(str);
        tv.append("\n");
   
    }

}catch (IOException ie) {
    ie.printStackTrace();

}
posted by へっぽ at 01:12 | TrackBack(0) | Android | このブログの読者になる | 更新情報をチェックする

MPAndroidChartで線グラフを描いてみる

MPAndroidChartというフリーのAndroidグラフ描画ツールで線グラフを描いてみた。
最も基本的(?)なメソッドをメモ。

@ app直下のbuild.gradleに以下を記述する。
repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    compile 'com.github.PhilJay:MPAndroidChart:v2.1.5'
}

A layoutの作成(activity_main.xml)
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <com.github.mikephil.charting.charts.LineChart
        android:id="@+id/line_chart"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        />
</LinearLayout>

B MainActivityの作成
import android.app.Activity;
import android.os.Bundle;

import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.data.Entry;
import java.util.ArrayList;

public class MainActivity extends Activity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LineChart lineChart = (LineChart) findViewById(R.id.line_chart);

        ArrayList<LineDataSet> dataSets = new ArrayList<>();

        // X軸の値
        ArrayList<String> xValues = new ArrayList<>();
        xValues.add("No.1");
        xValues.add("No.2");
        xValues.add("No.3");
        xValues.add("No.4");
        xValues.add("No.5");

        // value
        ArrayList<Entry> value = new ArrayList<>();
        value.add(new Entry(100, 0));
        value.add(new Entry(120, 1));
        value.add(new Entry(150, 2));
        value.add(new Entry(250, 3));
        value.add(new Entry(500, 4));

        LineDataSet valueDataSet = new LineDataSet(value, "sample");
        dataSets.add(valueDataSet);

        lineChart.setData(new LineData(xValues, dataSets));

    }

}





するとこのような線グラフが描ける。

LineChartSample.jpg
posted by へっぽ at 23:49 | TrackBack(0) | Android | このブログの読者になる | 更新情報をチェックする