第1回Python3データ分析模擬試験【第30問】解説

第1回Python3データ分析模擬試験第30問

本問題では「Matplotlib」のうち「積み上げ棒グラフの出力方法(barメソッド)」について学びます。

本問題の解説はYouTube動画でもご覧いただけます。
【解説動画】 第1回Python3データ分析模擬試験 第30問
※当解説動画シリーズはPythonエンジニア育成推進協会に認定された「Python 3 エンジニア認定データ分析試験」の参考教材です。

問題

次のコード群に関する説明のうち誤っているものはどれか。

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

x = [1, 2, 3]
y1 = [10, 2, 3]
y2 = [5, 3, 6]
labels = [‘spam’, ‘ham’, ‘egg’]
[ア]
ax.bar(x, y_total, tick_label=labels, label=’y1′)
ax.bar(x, y2, label=’y2′)
[イ]

plt.show()

① このコード群は積み上げ棒グラフを描画するものである。
② 描画されるグラフにはラベルがある。
③ barメソッドの引数に変数y1は利用されていない。
④ [ア]に入るコードは y_total = [num1 + num2 for num1, num2 in sum(y1, y2)] である。
⑤ [イ]に入るコードは ax.legend() である。

解説

正解は選択肢④です。以下解説します。

コードの確認

第1回_Python3データ分析模試_第30問コード1

選択肢を見る前に、コードを上から順に確認します。

あらかじめコードのアとイに正しいコードを入れて出力します。

第1回_Python3データ分析模試_第30問コード出力

すると右のような棒グラフを確認できます。この棒グラフを描画する上記コードを確認していきます。

第1回_Python3データ分析模試_第30問コード2

まずmatplotlib.pyplotをインポートします。

subplots関数で描画オブジェクトとサブプロットを生成し、変数のx、y1、y2、labelsにそれぞれ値を格納します。

ここで変数y_totalから始まる1行を少し詳しく見ていきます。

まずPythonのzip関数で、y1とy2のリストデータをまとめます。

for文で順番に取り出し、それぞれ足し算をした結果を、変数y_totalに格納します。

第1回_Python3データ分析模試_第30問コード4

コードに戻ります。

サブプロットのaxにbarメソッドで棒グラフを描画します。

barメソッドの引数として変数xでx軸の値、y_totalでy軸の値、tick_label引数で目盛りのラベル、そしてlabel引数で凡例用ラベルを指定します。

さらに同じサブプロットのaxにbarメソッドで棒グラフを一つ追加します。x軸は変わらず、y軸の値は変数y2で指定します。

またlegendメソッドで凡例を表示させます。

出力すると右のような積み上げ棒グラフを確認できます。

選択肢①

第1回_Python3データ分析模試_第30問選択肢①

選択肢①は正しい肢です。先ほど確認した通りです。

選択肢②

第1回_Python3データ分析模試_第30問選択肢②

選択肢②も正しい肢です。確認した通りです。

選択肢③

第1回_Python3データ分析模試_第30問選択肢③

選択肢③も正しい肢です。確認した通りです。

選択肢④

第1回_Python3データ分析模試_第30問選択肢④

選択肢④は誤りです。

sum関数ではなくzip関数です。

なおsum関数は引数で指定した数値の合計を返す関数です。

選択肢⑤

第1回_Python3データ分析模試_第30問選択肢⑤

選択肢⑤は正しい肢です。先ほど確認した通りです。

第1回Python3データ分析模擬試験第30問の解説は以上です。