AI資格ドリル
資格を選ぶ

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は何問収録されていますか?

A

現在13問を収録しています。内訳は基礎3問・標準9問・応用1問です。

Q第5章 Matplotlibの頻出論点は何ですか?

A

FigureとAxesの構造、入力データとコーディングスタイル、スタイル・ラベル・凡例・スケールなどが出題対象です(当サイト収録問題に基づく編集部集計)。

Q間違えた問題はどう復習すればいいですか?

A

誤答した選択肢のどこがずれていたかを解説で確認し、関連用語がある場合は用語集で定義に戻ってから再演習することをおすすめします。

第1問 ・ FigureとAxesの構造

Matplotlib の Figure と Axes の関係として、公式ドキュメントの記載に合っているものはどれか。

  • アAxes は Figure の上位にあり、1つの Axes が複数の Figure を含む
  • イFigure は1つ以上の Axes を含み、Axes はデータを描く領域である
  • ウFigure と Axes は同じ意味で、どちらを使っても違いはない
  • エAxes は目盛りと目盛りラベルだけを管理し、データの描画は行わない
答えと解説を見る
イFigure は1つ以上の Axes を含み、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」

問題番号: pyda-053
問題番号 pyda-053 の誤りを報告する
第2問 ・ FigureとAxesの構造

plt.subplots(2, 2) を呼んだときに作られるものとして、公式ドキュメントの記載に合っているものはどれか。

  • アAxes のない空の Figure
  • イAxes が1つだけの Figure
  • ウ2×2 の Axes の格子を持つ Figure
  • エ2つの Figure が横に並んだもの
答えと解説を見る
ウ2×2 の Axes の格子を持つ Figure正解
解説

正解は、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」

問題番号: pyda-054
問題番号 pyda-054 の誤りを報告する
第3問 ・ FigureとAxesの構造

Matplotlib の Artist に関する記述として、公式ドキュメントの記載に合っているものはどれか。

  • アArtist は Text や Line2D だけを指し、Figure や Axes は含まれない
  • イ多くの Artist は1つの Axes に属し、複数の Axes で共有したり別の Axes へ移したりできない
  • ウArtist は描画のたびに作り直されるため、変数に保持できない
  • エFigure 上で見えるものの多くは Artist ではなく、Axis が描いている
答えと解説を見る
イ多くの Artist は1つの Axes に属し、複数の Axes で共有したり別の Axes へ移したりできない正解
解説

正解は、多くの Artist は1つの Axes に属し、複数の Axes で共有したり別の Axes へ移したりできないという記述である。公式ドキュメントは、Figure 上で見えるものはほぼすべて Artist であり、Figure・Axes・Axis も Artist に含まれ、Figure の描画時にすべての Artist がキャンバスに描かれると説明している。Text・Line2D・collections・Patch なども Artist である。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-055
問題番号 pyda-055 の誤りを報告する
第4問 ・ FigureとAxesの構造

Axis に関する記述として、公式ドキュメントの記載に合っているものはどれか。

  • アAxis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成する
  • イAxis は Figure のタイトルや凡例を管理する
  • ウ目盛りラベルの文字列は Locator が、目盛りの位置は Formatter が決める
  • エAxes は常に Axis を1つだけ含む
答えと解説を見る
アAxis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成する正解
解説

正解は、Axis は軸のスケールと範囲を決め、目盛りと目盛りラベルを生成するという記述である。公式ドキュメントでは、目盛りの位置は Locator、目盛りラベルの文字列は Formatter が決める。Axes は通常2つ(3D では3つ)の Axis を含む。Axes はデータを描く領域、Axis は目盛りを提供するものというように、Axes と Axis は別物である。また、Figure のタイトルや図の凡例、カラーバーなどの特別な Artist は Axis ではなく Figure が管理する。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-056
問題番号 pyda-056 の誤りを報告する
第5問 ・ 入力データとコーディングスタイル

Matplotlib の2通りの使い方に関する記述として、公式ドキュメントの記載に合っているものはどれか。

  • アオブジェクト指向スタイルでは、pyplot の関数は一切使えない
  • イpyplot スタイルは、Figure と Axes を明示的に作ってそのメソッドを呼ぶ方法である
  • ウ複雑な図や再利用する関数には、オブジェクト指向スタイルが勧められている
  • エfrom pylab import * による使い方が、公式に推奨されている
答えと解説を見る
ウ複雑な図や再利用する関数には、オブジェクト指向スタイルが勧められている正解
解説

正解は、複雑な図や再利用する関数にはオブジェクト指向(OO)スタイルが勧められているという記述である。公式ドキュメントは、複雑な図や大きなプロジェクトの一部として再利用する関数には OO スタイルを勧め、pyplot スタイルは手早い対話的な作業に便利だと述べている。OO スタイルでも Figure の作成には pyplot の関数を使う。from pylab import * による pylab インターフェースは強く非推奨である。手早く試すだけなら pyplot スタイル、複数の図で使い回す処理を書くなら OO スタイル、という使い分けで覚えるとよい。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-057
問題番号 pyda-057 の誤りを報告する
第6問 ・ 入力データとコーディングスタイル

OO スタイルと pyplot スタイルのラベル設定の対応として、公式ドキュメントの記載に合っているものはどれか。

  • アOO スタイルは ax.set_xlabel、pyplot スタイルは plt.xlabel を使う
  • イOO スタイルは plt.xlabel、pyplot スタイルは ax.set_xlabel を使う
  • ウどちらのスタイルも ax.set_xlabel だけを使う
  • エOO スタイルでは x ラベルを設定できない
答えと解説を見る
アOO スタイルは ax.set_xlabel、pyplot スタイルは plt.xlabel を使う正解
解説

正解は、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」

問題番号: pyda-058
問題番号 pyda-058 の誤りを報告する
第7問 ・ スタイル・ラベル・凡例・スケール

複数の線を描いたグラフに凡例を表示する方法として、公式ドキュメントの記載に合っているものはどれか。

  • ア各 plot 呼び出しに label を付け、ax.legend() を呼ぶ
  • イax.legend() だけを呼べば、線の名前が自動で付く
  • ウ各 plot 呼び出しに color を付ければ、凡例は自動で表示される
  • エax.set_title() に線の名前を渡す
答えと解説を見る
ア各 plot 呼び出しに label を付け、ax.legend() を呼ぶ正解
解説

正解は、各 plot 呼び出しに label を付けてから ax.legend() を呼ぶ方法である。公式ドキュメントは、この手順で凡例が表示されると説明している。label がなければ凡例に載せる名前が決まらない。color は線の色を決める見た目の引数であり、set_title は Axes のタイトルを設定するメソッドで、どちらも凡例とは別の働きをする。複数の線を描くときは、線ごとに label を変えて付けることで、凡例の中で線を見分けられる。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-059
問題番号 pyda-059 の誤りを報告する
第8問 ・ スタイル・ラベル・凡例・スケール

Matplotlib のスケールとカテゴリ変数の描画に関する記述として、公式ドキュメントの記載に合っているものはどれか。

  • ア対数スケールは set_yscale では設定できず、loglog でしか設定できない
  • イ引数に文字列を渡すとカテゴリ変数の描画になり、1000個の文字列は1000個のカテゴリとして扱われる
  • ウカラーマップは vmin と vmax の間を非線形に対応づけるのが既定である
  • エカラーバーは Axes ごとの Artist で、図レベルでは追加できない
答えと解説を見る
イ引数に文字列を渡すとカテゴリ変数の描画になり、1000個の文字列は1000個のカテゴリとして扱われる正解
解説

正解は、引数に文字列を渡すとカテゴリ変数の描画になり、1000個の文字列は1000個のカテゴリとして扱われるという記述である。公式ドキュメントは、読み込み方法によっては数値や日付を表す文字列のリストが返るため注意が必要と述べている。対数スケールは set_yscale のほか loglog・semilogx・semilogy でも設定できる。カラーマップは既定で線形に対応づけ、非線形には norm 引数を使う。カラーバーは図レベルの Artist である。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-060
問題番号 pyda-060 の誤りを報告する
第9問 ・ 入力データとコーディングスタイル

描画関数の入力データについて、公式の記載に合っているものはどれか。

  • アpandas のデータオブジェクトは必ず意図どおりに描画されるため、変換は不要である
  • イnumpy.array か、numpy.asarray に渡せるオブジェクトを入力に想定する
  • ウリストを渡すことはできず、必ず pandas.DataFrame に変換する必要がある
  • エnumpy.matrix は numpy.array より推奨される入力である
答えと解説を見る
イnumpy.array か、numpy.asarray に渡せるオブジェクトを入力に想定する正解
解説

正解は、numpy.array か、numpy.asarray に渡せるオブジェクトを入力に想定する、である。公式ドキュメントは、描画関数は numpy.array または numpy.ma.masked_array、あるいは numpy.asarray に渡せるオブジェクトを入力に想定すると述べている。pandas のデータオブジェクトや numpy.matrix のような配列に似たクラスは意図どおり動かないことがあり、描画前に numpy.array へ変換するのが慣例である。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-079
問題番号 pyda-079 の誤りを報告する
第10問 ・ 入力データとコーディングスタイル

dict や DataFrame を描く方法として、公式の記載に合っているものはどれか。

  • ア必ず値を1列ずつ取り出して numpy.matrix に変換してから渡す
  • イpylab を読み込むと、列名だけで描画できる
  • ウdata 引数にオブジェクトを渡し、x・y などの引数に文字列でキーを指定する
  • エデータのキーは数値でなければならず、文字列では指定できない
答えと解説を見る
ウdata 引数にオブジェクトを渡し、x・y などの引数に文字列でキーを指定する正解
解説

正解は、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」

問題番号: pyda-080
問題番号 pyda-080 の誤りを報告する
第11問 ・ 入力データとコーディングスタイル

pylab インターフェースについて、公式の記載に合っているものはどれか。

  • ア強く非推奨とされている
  • イ公式が最も推奨する書き方である
  • ウpyplot スタイルより後に追加された新しい書き方である
  • エOO スタイルと同じ意味で、使い分ける必要はない
答えと解説を見る
ア強く非推奨とされている正解
解説

正解は、強く非推奨とされている、である。公式ドキュメントは、古い例に from pylab import * による pylab インターフェースが使われていることがあるが、この方法は強く非推奨だと注記している。公式が勧めるのは、複雑な図や再利用する関数・スクリプトには OO スタイル、手早い対話的な作業には pyplot スタイルである。pylab はこの2通りのどちらにも含まれない。古い例の from pylab import * を見かけても、新しく書くコードでは OO スタイルか pyplot スタイルを選ぶ。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-081
問題番号 pyda-081 の誤りを報告する
第12問 ・ スタイル・ラベル・凡例・スケール

値を色へ非線形に対応づける方法として、公式の記載に合っているものはどれか。

  • アvmin と vmax を大きな値にすれば、非線形の対応になる
  • イcolorbar の shrink を指定する
  • ウset_linestyle で線種を変える
  • エvmin・vmax の代わりに norm 引数を渡す(例: LogNorm)
答えと解説を見る
エvmin・vmax の代わりに norm 引数を渡す(例: LogNorm)正解
解説

正解は、vmin・vmax の代わりに norm 引数を渡す(例: LogNorm)、である。公式ドキュメントは、カラーマップを使う描画は ScalarMappable から派生する Artist で、vmin と vmax の間を cmap で指定したカラーマップへ線形に対応づけると述べている。非線形に対応づけたいときは vmin と vmax の代わりに norm 引数を渡す。norm にはほかの正規化も用意されており、LogNorm はその一例である。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-082
問題番号 pyda-082 の誤りを報告する
第13問 ・ スタイル・ラベル・凡例・スケール

Matplotlib のカラーバーに関する記述として、公式ドキュメントの記載に合っているものはどれか。

  • アAxes の中にだけ置ける部品で、図レベルでは扱えない
  • イデータと色の対応を示す鍵で、図レベルの Artist である
  • ウ線の太さを決める部品で、color 引数で作る
  • エカテゴリ変数にだけ使え、数値データには使えない
答えと解説を見る
イデータと色の対応を示す鍵で、図レベルの Artist である正解
解説

正解は、データと色の対応を示す鍵で、図レベルの Artist である、である。公式ドキュメントは、カラーバーはデータと色の対応を示す鍵で、ScalarMappable に付属し、通常は親の Axes から領域を取ると述べている。fig.colorbar(pc, ax=...) で追加し、extend で端に矢印を付け、shrink と aspect で大きさを調整できる。カラーバーの目盛りの位置や表示は、ノルムに合った既定の設定になり、ほかの Axis と同様に変更できる。

Matplotlib 公式ドキュメント「Quick start guide」

問題番号: pyda-083
問題番号 pyda-083 の誤りを報告する

執筆: AI資格ドリル編集部(運営者情報を見る)