気軽にアンケートをとって、その結果をグラフで描画したい場面は多くあります。例えば、グループで懇親会の出し物を決めるときや、旅行の候補地を決めるときに、アンケート結果がグラフになっていると説得力があります。今回はアンケートを元にしてグラフを描画する方法を紹介します。

  • アンケート結果をグラフ描画するプログラムを作ったところ

    アンケート結果をグラフ描画するプログラムを作ったところ

アンケートを手軽に作成しよう

最近では、気軽にブラウザからアンケートに回答できるWebサービスが登場しています。それらを利用することで、気軽にアンケートを実施することができます。高機能で有料のものから無料のものまでいろいろあります。

例えば、無料でさまざまな項目のアンケートを作成できる代表的なサービスが「Google Forms」です。アンケート結果をGoogleのスプレッドシートにもリンクできるので使い勝手の良いものとなっています。

  • Google Formsでアンケートを作っているところ

    Google Formsでアンケートを作っているところ

そして、もっと気軽に選択肢を選んでもらうだけのアンケートで良いという場合には、登録も不要な「簡単アンケートLIKE」もあります。質問と選択肢を記述するだけで気軽にアンケートを作成できます。

  • 手軽に選択アンケートを作成できるLIKEで質問を作成しているところ

    手軽に選択アンケートを作成できるLIKEで質問を作成しているところ

なお、このLIKEでは、アンケートの結果を気軽にJSON形式で取得できるようになっています。今回は、このLIKEからアンケート結果を取得してグラフを描画するプログラムを作ってみましょう。

なでしこでグラフを描画するには?「円グラフ描画」を使う

なでしこでグラフを描画する場合には、「円グラフ描画」や「棒グラフ描画」という命令が用意されており、これらの命令を利用することで手軽にグラフを描画できます。

まずは、円グラフ描画を使ってみましょう。「なでしこ3簡易エディタ」に以下のプログラムを入力してみましょう。

「北海道,9
沖縄,9
大阪,5
香川,4」をCSV取得して円グラフ描画。

「実行」ボタンを押すと次のような円グラフが描画されます。

  • 「円グラフ描画」命令を使ったところ

    「円グラフ描画」命令を使ったところ

カンマと改行でデータを区切って指定できるCSV形式を使ってデータを指定することで、気軽にグラフを描画できるのが分かるでしょう。

なでしこでグラフを描画するには?「棒グラフ描画」を使う

棒グラフの場合は、次のようなプログラムを記述します。

「-,どこに行きたいですか?
北海道,9
沖縄,9
大阪,5
香川,4」をCSV取得して棒グラフ描画。

「実行」ボタンを押してみましょう。次のような棒グラフが描画されます。

  • 「棒グラフ描画」命令を使ったところ

    「棒グラフ描画」命令を使ったところ

なお、「棒グラフ描画」はもともと複数の系列データを表示できる仕組みになっています。そのため、データの行列を交換して描画すると、少し異なるグラフになります。以下のプログラムを入力してみましょう。

「場所,北海道,沖縄,大阪,香川
票,9,9,5,4」をCSV取得して棒グラフ描画。

実行すると次のようなグラフが描画されます。

  • 「棒グラフ描画」命令でデータの行列を入れ替えたところ

    「棒グラフ描画」命令でデータの行列を入れ替えたところ

アンケート結果をグラフにしてみよう

グラフ描画の方法が分かりました。それでは、アンケート結果をグラフで描画してみましょう。なお、簡単アンケートLIKEでは、アンケートに割り振られた番号を確認して、以下のようなURLにアクセスするとJSON形式でアンケート結果を取得できる仕組みとなっています。

[JSONデータのURL]
https://api.aoikujira.com/like/api.php?m=get&item_id=(アンケート番号)

JSONデータは次のような書式となっており、answersプロパティに、選択肢のラベル(label)と得票数(point)が配列形式で入っているという仕様になっています。

  • LIKEが出力するJSONデータ

    LIKEが出力するJSONデータ

これを踏まえて、なでしこでJSONデータを取り出して、棒グラフを描画するプログラムは次のようになります。

# アンケートの番号を以下に指定 --- (*1)
LIKE番号=1
# JSONデータを取得する --- (*2)
URL=「https://api.aoikujira.com/like/api.php?m=get&item_id={LIKE番号}」
J=URLからAJAX_JSON取得。
# JSONデータを二次元配列に変形する --- (*3)
データは[["-", J["question"]]]
J["answers"]を反復
  ラベル=対象["label"]
  ポイント=対象["point"]
  データに[ラベル, ポイント]を配列追加。
ここまで。
データを棒グラフ描画。# --- (*4)

プログラムを実行すると次のように表示されます。

  • アンケート結果を取得して棒グラフを描画したところ

    アンケート結果を取得して棒グラフを描画したところ

プログラムを確認してみましょう。(*1)の部分ではアンケートの番号を指定します。(*2)では簡単アンケートLIKEのAPIにアクセスして、JSONデータを取得します。(*3)では取得したJSONデータを変形して二次元配列のデータに変換します。ここがこのプログラムのカギとなる部分です。そして、(*4)ではデータを元にグラフ描画を行います。

なお、プログラムの(*4)の直前に「データをJSONエンコードして表示」という一行を入れて実行してみてください。すると、次のようなデータが生成されていることが分かります。元のJSONデータから「answers」というデータのみを取り出して二次元配列に変換していることが分かるでしょう。

[["-","好きなメニューは??"],["カレー",17],["ラーメン",8],["寿司",9],["鯛焼き",11]]

まとめ

以上、今回は、なでしこを使ってアンケートの結果をグラフ描画するプログラムを紹介しました。なでしこには「円グラフ描画」「棒グラフ描画」「ドーナツグラフ描画」「散布図描画 」などいろいろなグラフを描画する命令が備わっています。活用してみてください。

自由型プログラマー。くじらはんどにて、プログラミングの楽しさを伝える活動をしている。代表作に、日本語プログラミング言語「なでしこ」 、テキスト音楽「サクラ」など。2001年オンラインソフト大賞入賞、2004年度未踏ユース スーパークリエータ認定、2010年 OSS貢献者章受賞。技術書も多く執筆している。直近では、「シゴトがはかどる Python自動処理の教科書(マイナビ出版)」「すぐに使える!業務で実践できる! PythonによるAI・機械学習・深層学習アプリのつくり方 TensorFlow2対応(ソシム)」「マンガでざっくり学ぶPython(マイナビ出版)」など。