Python の Matplotlib を使ったコントアープロットの作成

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験は、PythonのMatplotlibを使ってコントアープロットを作成する方法に関する手順を追ったチュートリアルです。コントアープロットは、3次元データを2次元で視覚化するのに役立ちます。このチュートリアルでは、単純なコントアープロット、コントアー用のカラーバー付きの画像上のコントアー、およびラベル付きのコントアーを示します。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み終了するまで数秒待つ必要がある場合があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に直面した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

コントアープロットを作成する前に、必要なライブラリをインポートする必要があります。このチュートリアルでは、numpyとmatplotlibを使用します。

import matplotlib.pyplot as plt
import numpy as np

データを作成する

コントアープロットを作成するために使用するデータを作成する必要があります。この例では、2つの2次元ガウス関数を作成します。

delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = np.exp(-X**2 - Y**2)
Z2 = np.exp(-(X - 1)**2 - (Y - 1)**2)
Z = (Z1 - Z2) * 2

ラベル付きの単純なコントアープロットを作成する

データができたので、デフォルトの色を使ってラベル付きの単純なコントアープロットを作成できます。

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
ax.clabel(CS, inline=True, fontsize=10)
ax.set_title('Simplest default with labels')

コントアーのラベルを手動で配置する

データ座標の位置のリストを提供することで、コントアーのラベルを手動で配置することもできます。

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z)
manual_locations = [
    (-1, -1.4), (-0.62, -0.7), (-2, 0.5), (1.7, 1.2), (2.0, 1.4), (2.4, 1.7)]
ax.clabel(CS, inline=True, fontsize=10, manual=manual_locations)
ax.set_title('labels at selected locations')

コントアーの色を設定する

すべてのコントアーを同じ色にするか、負のコントアーを点線ではなく実線にすることができます。

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k')  ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours dashed')
plt.rcParams['contour.negative_linestyle'] = 'solid'
fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6, colors='k')  ## Negative contours default to dashed.
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Single color - negative contours solid')

コントアーの色を手動で指定する

コントアーの色を手動で指定することもできます。

fig, ax = plt.subplots()
CS = ax.contour(X, Y, Z, 6,
                linewidths=np.arange(.5, 4,.5),
                colors=('r', 'green', 'blue', (1, 1, 0), '#afeeee', '0.5'),
                )
ax.clabel(CS, fontsize=9, inline=True)
ax.set_title('Crazy lines')

カラーマップを使ってコントアーの色を指定する

コントアー線の色を指定するためにカラーマップを使うことができます。

fig, ax = plt.subplots()
im = ax.imshow(Z, interpolation='bilinear', origin='lower',
               cmap=cm.gray, extent=(-3, 3, -2, 2))
levels = np.arange(-1.2, 1.6, 0.2)
CS = ax.contour(Z, levels, origin='lower', cmap='flag', extend='both',
                linewidths=2, extent=(-3, 3, -2, 2))

## Thicken the zero contour.
CS.collections[6].set_linewidth(4)

ax.clabel(CS, levels[1::2],  ## label every second level
          inline=True, fmt='%1.1f', fontsize=14)

## make a colorbar for the contour lines
CB = fig.colorbar(CS, shrink=0.8)

ax.set_title('Lines with colorbar')

## We can still add a colorbar for the image, too.
CBI = fig.colorbar(im, orientation='horizontal', shrink=0.8)

## This makes the original colorbar look a bit out of place,
## so let's improve its position.

l, b, w, h = ax.get_position().bounds
ll, bb, ww, hh = CB.ax.get_position().bounds
CB.ax.set_position([ll, b + 0.1*h, ww, h*0.8])

まとめ

この実験では、PythonのMatplotlibを使ってコントアープロットを作成する方法を学びました。ラベル付きの単純なコントアープロットの作成、コントアーのラベルを手動で配置する方法、コントアーの色を設定する方法、コントアーの色を手動で指定する方法、およびコントアーの色を指定するためのカラーマップの使用方法について説明しました。