Python3エンジニア認定データ分析試験 第5章 Matplotlib 予想問題と解説
Python3エンジニア認定データ分析試験「第5章 Matplotlib」の予想問題を13問収録しています。各問を解説つきで掲載し、全問は演習画面で解けます。出題は公式シラバスの範囲内です。
この章の要点
FigureとAxesの構造、入力データとコーディングスタイル、スタイル・ラベル・凡例・スケールなどを扱う分野です。全13問(基礎3問・標準9問・応用1問)を収録しています。
- FigureとAxesの構造
- 入力データとコーディングスタイル
- スタイル・ラベル・凡例・スケール
情報源と編集区分
公式範囲を確認し、問題数・難易度・確認点は当サイトが集計・編集。
試験概要(公式)確認しておきたいポイント
当サイトの作問時に観察した、取り違えやすい論点です(公式の統計ではありません)。
- Figure と Axes の関係。Figure は1つ以上の Axes を含み、Axes はデータを描く領域である。plt.figure() は Axes のない空の Figure、plt.subplots() は Axes が1つの Figure、plt.subplots(2, 2) は 2×2 の Axes の格子を持つ1つの Figure を作る。
- Axes と Axis の混同。Axes はデータを描く領域、Axis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成するものである。目盛りの位置は Locator、目盛りラベルの文字列は Formatter が決める。
- Artist の範囲。Figure 上で見えるものはほぼすべて Artist で、Figure・Axes・Axis も含まれる。多くの Artist は1つの Axes に属し、複数の Axes で共有したり別の Axes へ移したりできない。
- OO スタイルと pyplot スタイルの使い分けと対応。複雑な図や再利用する関数には OO スタイルが勧められ、pyplot スタイルは手早い対話的な作業に便利とされる。ラベル設定は OO スタイルが ax.set_xlabel、pyplot スタイルが plt.xlabel で、OO スタイルでも Figure の作成には pyplot の関数を使う。
- 凡例の出し方。各 plot 呼び出しに label を付けてから ax.legend() を呼ぶ。color は線の色、set_title はタイトルの設定で、凡例とは別の働きである。
- 文字列を渡したときの描画。引数に文字列を渡すとカテゴリ変数の描画になり、1000個の文字列は1000個のカテゴリとして扱われる。数値や日付を表す文字列のリストが返る読み込み方法では、数値のつもりでもカテゴリとして描かれる点に注意する。
この章に関連する比較記事
混同しやすい2つの概念を並べて整理した記事です。
よくある質問
Q第5章 Matplotlibは何問収録されていますか?
現在13問を収録しています。内訳は基礎3問・標準9問・応用1問です。
Q第5章 Matplotlibの頻出論点は何ですか?
FigureとAxesの構造、入力データとコーディングスタイル、スタイル・ラベル・凡例・スケールなどが出題対象です(当サイト収録問題に基づく編集部集計)。
Q間違えた問題はどう復習すればいいですか?
誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。
Matplotlib の Figure と Axes の関係として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、Figure は1つ以上の Axes を含み、Axes はデータを描く領域であるという記述である。公式ドキュメントは、Matplotlib は Figure 上にデータを描き、Figure は1つ以上の Axes を含むと述べている。Axes は x-y 座標(極座標図なら theta-r、3D なら x-y-z)で点を指定できる領域である。目盛りと目盛りラベルを提供するのは Axes ではなく Axis で、Axes と Axis は別物である。
Matplotlib 公式ドキュメント「Quick start guide」
plt.subplots(2, 2) を呼んだときに作られるものとして、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、2×2 の Axes の格子を持つ Figure である。公式ドキュメントは、plt.figure() は Axes のない空の Figure、plt.subplots() は Axes が1つの Figure、plt.subplots(2, 2) は 2×2 の Axes の格子を持つ Figure を作ると説明している。引数の数だけ Figure が増えるわけではなく、1つの Figure の中に複数の Axes が入る。配置を指定して Axes を作りたいときは subplot_mosaic を使う。
Matplotlib 公式ドキュメント「Quick start guide」
Matplotlib の Artist に関する記述として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、多くの Artist は1つの Axes に属し、複数の Axes で共有したり別の Axes へ移したりできないという記述である。公式ドキュメントは、Figure 上で見えるものはほぼすべて Artist であり、Figure・Axes・Axis も Artist に含まれ、Figure の描画時にすべての Artist がキャンバスに描かれると説明している。Text・Line2D・collections・Patch なども Artist である。
Matplotlib 公式ドキュメント「Quick start guide」
Axis に関する記述として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、Axis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成するという記述である。公式ドキュメントでは、目盛りの位置は Locator、目盛りラベルの文字列は Formatter が決める。Axes は通常2つ(3D では3つ)の Axis を含む。Axes はデータを描く領域、Axis は目盛りを提供するものというように、Axes と Axis は別物である。また、Figure のタイトルや図の凡例、カラーバーなどの特別な Artist は Axis ではなく Figure が管理する。
Matplotlib 公式ドキュメント「Quick start guide」
Matplotlib の2通りの使い方に関する記述として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、複雑な図や再利用する関数にはオブジェクト指向(OO)スタイルが勧められているという記述である。公式ドキュメントは、複雑な図や大きなプロジェクトの一部として再利用する関数には OO スタイルを勧め、pyplot スタイルは手早い対話的な作業に便利だと述べている。OO スタイルでも Figure の作成には pyplot の関数を使う。from pylab import * による pylab インターフェースは強く非推奨である。手早く試すだけなら pyplot スタイル、複数の図で使い回す処理を書くなら OO スタイル、という使い分けで覚えるとよい。
Matplotlib 公式ドキュメント「Quick start guide」
OO スタイルと pyplot スタイルのラベル設定の対応として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、OO スタイルは ax.set_xlabel、pyplot スタイルは plt.xlabel を使うという対応である。公式ドキュメントは、OO スタイルでは ax.set_xlabel・ax.set_ylabel・ax.set_title・ax.legend、pyplot スタイルでは plt.xlabel・plt.ylabel・plt.title・plt.legend を使うと示している。ax. から始まる書き方が OO スタイル、plt. から始まる書き方が pyplot スタイルである。
Matplotlib 公式ドキュメント「Quick start guide」
複数の線を描いたグラフに凡例を表示する方法として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、各 plot 呼び出しに label を付けてから ax.legend() を呼ぶ方法である。公式ドキュメントは、この手順で凡例が表示されると説明している。label がなければ凡例に載せる名前が決まらない。color は線の色を決める見た目の引数であり、set_title は Axes のタイトルを設定するメソッドで、どちらも凡例とは別の働きをする。複数の線を描くときは、線ごとに label を変えて付けることで、凡例の中で線を見分けられる。
Matplotlib 公式ドキュメント「Quick start guide」
Matplotlib のスケールとカテゴリ変数の描画に関する記述として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、引数に文字列を渡すとカテゴリ変数の描画になり、1000個の文字列は1000個のカテゴリとして扱われるという記述である。公式ドキュメントは、読み込み方法によっては数値や日付を表す文字列のリストが返るため注意が必要と述べている。対数スケールは set_yscale のほか loglog・semilogx・semilogy でも設定できる。カラーマップは既定で線形に対応づけ、非線形には norm 引数を使う。カラーバーは図レベルの Artist である。
Matplotlib 公式ドキュメント「Quick start guide」
描画関数の入力データについて、公式の記載に合っているものはどれか。
答えと解説を見る
正解は、numpy.array か、numpy.asarray に渡せるオブジェクトを入力に想定する、である。公式ドキュメントは、描画関数は numpy.array または numpy.ma.masked_array、あるいは numpy.asarray に渡せるオブジェクトを入力に想定すると述べている。pandas のデータオブジェクトや numpy.matrix のような配列に似たクラスは意図どおり動かないことがあり、描画前に numpy.array へ変換するのが慣例である。
Matplotlib 公式ドキュメント「Quick start guide」
dict や DataFrame を描く方法として、公式の記載に合っているものはどれか。
答えと解説を見る
正解は、data 引数にオブジェクトを渡し、x・y などの引数に文字列でキーを指定する、である。公式ドキュメントは、dict や構造化 numpy 配列、pandas.DataFrame のように文字列でアクセスできるオブジェクトを、data キーワードに渡して描けると述べ、scatter('a', 'b', c='c', s='d', data=data) の形を例に挙げている。この方法では、x や y にあたる変数を、配列そのものではなくキーに対応する文字列で指定する。配列に似たクラスを numpy.array へ変換する慣例とは別の、ラベルでアクセスできるデータ向けの渡し方である。
Matplotlib 公式ドキュメント「Quick start guide」
pylab インターフェースについて、公式の記載に合っているものはどれか。
答えと解説を見る
正解は、強く非推奨とされている、である。公式ドキュメントは、古い例に from pylab import * による pylab インターフェースが使われていることがあるが、この方法は強く非推奨だと注記している。公式が勧めるのは、複雑な図や再利用する関数・スクリプトには OO スタイル、手早い対話的な作業には pyplot スタイルである。pylab はこの2通りのどちらにも含まれない。古い例の from pylab import * を見かけても、新しく書くコードでは OO スタイルか pyplot スタイルを選ぶ。
Matplotlib 公式ドキュメント「Quick start guide」
値を色へ非線形に対応づける方法として、公式の記載に合っているものはどれか。
答えと解説を見る
正解は、vmin・vmax の代わりに norm 引数を渡す(例: LogNorm)、である。公式ドキュメントは、カラーマップを使う描画は ScalarMappable から派生する Artist で、vmin と vmax の間を cmap で指定したカラーマップへ線形に対応づけると述べている。非線形に対応づけたいときは vmin と vmax の代わりに norm 引数を渡す。norm にはほかの正規化も用意されており、LogNorm はその一例である。
Matplotlib 公式ドキュメント「Quick start guide」
Matplotlib のカラーバーに関する記述として、公式ドキュメントの記載に合っているものはどれか。
答えと解説を見る
正解は、データと色の対応を示す鍵で、図レベルの Artist である、である。公式ドキュメントは、カラーバーはデータと色の対応を示す鍵で、ScalarMappable に付属し、通常は親の Axes から領域を取ると述べている。fig.colorbar(pc, ax=...) で追加し、extend で端に矢印を付け、shrink と aspect で大きさを調整できる。カラーバーの目盛りの位置や表示は、ノルムに合った既定の設定になり、ほかの Axis と同様に変更できる。
Matplotlib 公式ドキュメント「Quick start guide」