【Android】MPAndroidChartで折れ線グラフを表示する方法を解説
このチュートリアルでは、Androidアプリで折れ線グラフ(ラインチャート)を表示する方法を解説します。定番のグラフ描画ライブラリ「MPAndroidChart」を利用すれば、複雑な描画処理を自前で実装することなく、見栄えの良い折れ線グラフを簡単に組み込むことができます。
手順1:新規プロジェクトを作成する
まず、Android Studioで新しいプロジェクトを作成しましょう。メニューから File ⇒ New Project を選択し、必要な項目をすべて入力してプロジェクトを作成します。
手順2:モジュールレベルのbuild.gradleにライブラリを追加する
build.gradle(Moduleレベル)を開き、以下のようにライブラリの依存関係を追加します。
apply plugin: 'com.android.application'
android {
packagingOptions {
exclude 'META-INF/proguard/androidx-annotations.pro'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/notice.txt'
exclude 'META-INF/ASL2.0'
}
compileSdkVersion 28
defaultConfig {
applicationId "com.example.andy.myapplication"
minSdkVersion 15
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0-alpha'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
重要なのは dependencies ブロック内の com.github.PhilJay:MPAndroidChart:v3.1.0-alpha の行です。これでMPAndroidChartライブラリがプロジェクトに組み込まれます。また、packagingOptions の exclude 設定により、META-INF関連ファイルの重複によるビルドエラーを未然に防いでいます。
手順3:プロジェクトレベルのbuild.gradleにリポジトリを追加する
続いて、build.gradle(Projectレベル)を開き、以下のようにJitPackのMavenリポジトリを追加します。MPAndroidChartはJitPack経由で配信されているため、この設定が必須となります。
// すべてのサブプロジェクト/モジュールに共通する設定オプションを追加できるトップレベルのビルドファイルです。
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
// 注意:アプリ本体の依存関係はここには記述せず、
// 個々のモジュールのbuild.gradleファイルに記述してください。
}
}
allprojects {
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
allprojects の repositories に maven { url 'https://jitpack.io' } を追加することで、GitHub上のライブラリをGradle経由で取得できるようになります。
手順4:activity_main.xmlにコードを追加する
次に、res/layout/activity_main.xml に以下のコードを追加します。
<?xml version = "1.0" encoding = "utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android = "https://schemas.android.com/apk/res/android"
xmlns:app = "https://schemas.android.com/apk/res-auto"
xmlns:tools = "https://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
tools:context = ".MainActivity">
<com.github.mikephil.charting.charts.LineChart
android:id = "@+id/lineChart"
android:layout_width = "fill_parent"
android:layout_height = "fill_parent" />
</android.support.constraint.ConstraintLayout>
上記のコードでは、折れ線グラフを表示するための LineChartビュー を画面いっぱいに配置しています。
手順5:MainActivity.javaにコードを追加する
最後に、src/MainActivity.java に以下のコードを追加します。
package com.example.andy.myapplication;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.utils.ColorTemplate;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
LineChart lineChart;
LineData lineData;
LineDataSet lineDataSet;
ArrayList lineEntries;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lineChart = findViewById(R.id.lineChart);
getEntries();
lineDataSet = new LineDataSet(lineEntries, "");
lineData = new LineData(lineDataSet);
lineChart.setData(lineData);
lineDataSet.setColors(ColorTemplate.JOYFUL_COLORS);
lineDataSet.setValueTextColor(Color.BLACK);
lineDataSet.setValueTextSize(18f);
}
private void getEntries() {
lineEntries = new ArrayList<>();
lineEntries.add(new Entry(2f, 0));
lineEntries.add(new Entry(4f, 1));
lineEntries.add(new Entry(6f, 1));
lineEntries.add(new Entry(8f, 3));
lineEntries.add(new Entry(7f, 4));
lineEntries.add(new Entry(3f, 3));
}
}
コードのポイント解説
- getEntries():グラフにプロットするデータポイント(Entryオブジェクト)を生成し、ArrayListに格納するメソッドです。
- LineDataSet:Entryのリストをもとにデータセットを作成します。第2引数には系列のラベルを指定できます。
- setColors():ColorTemplate.JOYFUL_COLORS を指定することで、鮮やかな配色が自動的に適用されます。
- setValueTextColor() / setValueTextSize():各ポイントに表示される値ラベルの文字色とサイズを調整します。
アプリを実行して結果を確認する
それでは、アプリを実行してみましょう。実際のAndroidスマートフォンをパソコンに接続しているものとします。Android Studioでプロジェクト内のアクティビティファイルを開き、ツールバーのRun(実行)アイコンをクリックしてください。デバイス選択画面から自分のモバイル端末を選ぶと、端末に以下のような画面が表示されます。

上記の実行結果のとおり、データセットに設定した値に基づいて、折れ線グラフが正しく描画されていることが確認できます。
なお、本記事のコードはサポートライブラリ時代(AndroidX移行前)のものです。最新のAndroidX環境でも同様の手順で実装できますので、その場合は androidx.appcompat.app.AppCompatActivity の利用や、最新のGradle構文への読み替えを行ってください。
-
【Android】ViewFlipperの使い方を徹底解説!ビュー切り替えアニメーションの実装方法
ViewFlipperとは?ViewFlipperは、複数の子ビューを重ねて保持し、一定間隔での自動切り替えやボタン操作による手動切り替えを、アニメーション効果付きで実現できるAndroidのウィジェットです。画像スライダー、オンボーディング画面、シンプルなカルーセルUIなどを作りたいときに非常に便利です。本記事では、ViewFlipperを使ってImageView・Button・TextViewをスライドアニメーションで切り替えるサンプルアプリを、ステップごとに詳しく解説します。Step 1:新規プロジェクトを作成するAndroid Studioを起動し、メニューから「File」→「New
-
【Android】スナックバー(Snackbar)の使い方をステップごとに解説
このチュートリアルでは、Androidアプリでスナックバー(Snackbar)を使用する方法を、サンプルコードとともに段階的に解説します。スナックバーは画面下部に短いメッセージを一時的に表示できるUIコンポーネントで、Toastとは異なり「再試行(RETRY)」などのアクションボタンを組み込めるのが大きな特徴です。 手順1:新規プロジェクトを作成する Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成しましょう。 手順2:レイアウトファイル(activity_main.xml)を編集する