気軜にアンケヌトをずっお、その結果をグラフで描画したい堎面は倚くありたす。䟋えば、グルヌプで懇芪䌚の出し物を決めるずきや、旅行の候補地を決めるずきに、アンケヌト結果がグラフになっおいるず説埗力がありたす。今回はアンケヌトを元にしおグラフを描画する方法を玹介したす。

  • アンケヌト結果をグラフ描画するプログラムを䜜ったずころ

    アンケヌト結果をグラフ描画するプログラムを䜜ったずころ

アンケヌトを手軜に䜜成しよう

最近では、気軜にブラりザからアンケヌトに回答できる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(マむナビ出版)」など。