本問題では「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() である。
解説
正解は選択肢④です。以下解説します。
コードの確認
選択肢を見る前に、コードを上から順に確認します。
あらかじめコードのアとイに正しいコードを入れて出力します。
すると右のような棒グラフを確認できます。この棒グラフを描画する上記コードを確認していきます。
まずmatplotlib.pyplotをインポートします。
subplots関数で描画オブジェクトとサブプロットを生成し、変数のx、y1、y2、labelsにそれぞれ値を格納します。
ここで変数y_totalから始まる1行を少し詳しく見ていきます。
まずPythonのzip関数で、y1とy2のリストデータをまとめます。
for文で順番に取り出し、それぞれ足し算をした結果を、変数y_totalに格納します。
コードに戻ります。
サブプロットのaxにbarメソッドで棒グラフを描画します。
barメソッドの引数として変数xでx軸の値、y_totalでy軸の値、tick_label引数で目盛りのラベル、そしてlabel引数で凡例用ラベルを指定します。
さらに同じサブプロットのaxにbarメソッドで棒グラフを一つ追加します。x軸は変わらず、y軸の値は変数y2で指定します。
またlegendメソッドで凡例を表示させます。
出力すると右のような積み上げ棒グラフを確認できます。
選択肢①
選択肢①は正しい肢です。先ほど確認した通りです。
選択肢②
選択肢②も正しい肢です。確認した通りです。
選択肢③
選択肢③も正しい肢です。確認した通りです。
選択肢④
選択肢④は誤りです。
sum関数ではなくzip関数です。
なおsum関数は引数で指定した数値の合計を返す関数です。
選択肢⑤
選択肢⑤は正しい肢です。先ほど確認した通りです。
第1回Python3データ分析模擬試験第30問の解説は以上です。