メインコンテンツへスキップ
【flutter】数行でできる!Pyramid Chartを実装してみた!【syncfusion_flutter_chart】
  1. Posts/

【flutter】数行でできる!Pyramid Chartを実装してみた!【syncfusion_flutter_chart】

flutter用チャート描画ライブラリsyncfusion_flutter_chartsのやってみた編。

今回はピラミッド型チャート図をflutterアプリで描画する方法をわかりやすく解説します。

この記事は以下のような方を対象者としています。

  • flutterの学習を始めたい方
  • flutterのグラフ描画のやり方を探している方
  • syncfusion_flutter_chartsの使い方を知りたい方

前置き: syncfusion_flutter_chartsとは?
#

Alt text

syncfusion_flutter_chartsとはflutter用のチャート描画ライブラリです。

このライブラリを使うことで棒グラフや円グラフまで様々なチャート図をflutterアプリ上で描画できます。

こちらがsyncfusion_flutter_chartsでpyramid chartを作成した際のアプリの挙動です。

Alt text

英語版の公式ライブラリから引用し本記事の説明を進めて行きます。

pyramid_chart作成手順その1 : プロジェクトファイルを作成
#

ここからは実際のコードを交えて説明して行きます。

まずはflutterのプロジェクトを自分のローカル上に作成しましょう。

まずはターミナルを開き下記コマンドを実行してください。

<!-- デスクトップ上にpyramid_chartというflutterプロジェクトフォルダを作成 -->
 ~ $ flutter create ~/Desktop/pyramid_chart

このコマンドでデスクトップ上にpyramid_chartという名前のフォルダが生成されていれば成功です。

pyramid_chart作成手順その2 : syncfusion_flutter_chartsをインストール
#

続いて先ほど作ったプロジェクトにsyncfusion_flutter_chartsをインストールします。

flutterでプロジェクトにライブラリを追加するにはpubspec.yamlファイルを編集する必要があります

pubspec.yamlとはパッケージ管理ファイルです。

pubspec.yamlはプロジェクトフォルダ直下に存在します。

dependencies:
  flutter:
    sdk: flutter
  <!--下記1行を追加-->
  syncfusion_flutter_charts: 18.3.53

上記ファイル保存後にターミナル上で下記コマンドを実行します。

flutter pub get

これにより自分のプロジェクト内でsyncfusion_flutter_chartsを利用できるようになります。

pyramid_chart作成手順その3 : pyramid chartを描画するコードを書く
#

これでflutterアプリ内でpyramid chartを描画する準備ができました。

デフォルトで生成されるmain.dartにpyramid chartの描画コードを書いて行きます。

import 'package:flutter/material.dart';
<!-- 下記1行でsyncfusion_flutter_chartsをインポート -->
import 'package:syncfusion_flutter_charts/charts.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    <!-- 下記chartDataにチャートで表示するためのデータを格納 -->
    final List<ChartData> chartData = [
      ChartData('ねこ', 5),
      ChartData('お父さん', 8),
      ChartData('お母さん', 4),
      ChartData('ぼく', 2)
    ];
    return Scaffold(
        body: Center(
            child: Container(
                <!-- SfPyramidChartでピラミッド型チャートを指定 -->
                child: SfPyramidChart(
                    <!-- チャートタイトルを表示 -->
                    title: ChartTitle(text: '家庭内権力図'),
                    <!-- グラフの色を指定 -->
                    palette: <Color>[
                      Colors.orange[300],
                      Colors.orange[200],
                      Colors.orange[100],
                      Colors.orange[50]
                    ],
                    <!-- グラフをタップした際にツールチップを表示 -->
                    tooltipBehavior: TooltipBehavior(enable: true),
                    <!-- グラフ下にデータ情報を表示 -->
                    legend: Legend(isVisible: true),
                    <!-- 表示データの設定 -->
                    series: PyramidSeries<ChartData, String>(
                        dataSource: chartData,
                        xValueMapper: (ChartData data, _) => data.x,
                        yValueMapper: (ChartData data, _) => data.y,
                        dataLabelSettings:
                            DataLabelSettings(isVisible: true))))));
  }
}

<!-- データ用クラスを定義 -->
class ChartData {
  ChartData(this.x, this.y, [this.color]);
  final String x;
  final double y;
  final Color color;
}

上記コードを記述後、実行してみましょう。

エミュレータ上で下記画像のような挙動が確認できたら成功です。

Alt text

関連記事

【初心者向け】GarageBandのEQエフェクトの使い方をわかりやすく解説
【Garageband】声加工して歌ってみた動画を作ろう【2020年】
【バトルモン(ZOOBA)】ジェムを効率よくゲットする方法まとめ