NumPy - 等高線を描画する

概要

  • np.meshgrid()の動作イメージを思い出せるようにしておきたい

イメージ

コード

import numpy as np
from matplotlib import pyplot as plt


def main():
    """等高線を描画する"""
    
    # まず、値の範囲 & 値の間隔を決める必要がある
    x_min, x_max = 0, 5
    y_min, y_max = 0, 5
    res = 1    # 値の間隔
    x_grid, y_grid = np.meshgrid(
        np.arange(x_min, x_max, res),
        np.arange(y_min, y_max, res)
    )
    for _grid in (x_grid, y_grid): print(_grid)
    
    # 等高線を描画する
    plot_contour = True
    if plot_contour:
        grid = x_grid + y_grid    # 加算した値を等高線に利用する
        print(grid)
        plt.contourf(x_grid, y_grid, grid, alpha=0.4)
        plt.show()


if __name__ == '__main__':
    main()

# コンソール上では以下が出力される
# [[0 1 2 3 4]
#  [0 1 2 3 4]
#  [0 1 2 3 4]
#  [0 1 2 3 4]
#  [0 1 2 3 4]]
# [[0 0 0 0 0]
#  [1 1 1 1 1]
#  [2 2 2 2 2]
#  [3 3 3 3 3]
#  [4 4 4 4 4]]
# [[0 1 2 3 4]
#  [1 2 3 4 5]
#  [2 3 4 5 6]
#  [3 4 5 6 7]
#  [4 5 6 7 8]]

動作結果

以下のようになる。
f:id:zdassen:20180124112429p:plain