Update 2023.11.14 2018.11.07

科学技術計算の 3D プロット(3次元描画,3次元グラフ)
Python3(3.10)で動くソースコード(.pyファイル .ipynbファイル)あります
「anaconda3」on .py「PyCharm」.ipynb「Jupyter Notebook」


課題 3D プロット(3次元描画,3次元グラフ)

とするとき,関数

を3次元グラフで表示しなさい.


(2023-11-14)Python3.10で動作確認済み,図の出力のためコード追加「fig.add_axes(ax)」

この課題は,「VisualC++による理工学問題の解法 例題3.4 3次元表示」と同じものである.2つのグラフを見比べてほしい.

C++の方は,グラフの描画もソースに含んでいて150行ほどのプログラムである.Pythonはオープンソースであり,科学技術計算やグラフの描画(プロット)などのライブラリが充実している.それらをインポートしたおかげでわずか20行ほどのプログラムになっている.

Pythonの特徴の1つとして「誰が書いても同じコードになる」というものがある.実は上のコードはWebにあった「3D プロット」の例のコピペである.コードを眺めているいるうちにこの課題に合わせてどこを修正すればよいか自然と判ってきた.

ですので私は上のコードの個々のパラメータの役割やコマンドの働きがうまく説明できない.それでもできてしまうのが Python である.

一番下のXY平面は等高線(contour)である.これもインポートしたライブラリがそうしたというほかない.

◆◆ソースコード◆◆

このWebページの左上隅からダウンロードできます。

ソースファイルは1つです。
・3Dplot.py;プロット(3次元描画,3次元グラフ)

【3Dplot.py】
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# -*- coding: utf-8 -*-
# 科学技術計算
# 3D plot
import numpy as np
import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = Axes3D(fig)
fig.add_axes(ax)                            # 追加
X = np.arange(-2*np.pi, 2*np.pi, 0.25)
Y = np.arange(-2*np.pi, 2*np.pi, 0.25)

X, Y = np.meshgrid(X, Y)
R = np.sqrt(X ** 2 + Y ** 2)
Z =  np.exp(-0.25 * R) * np.cos(2 * R)

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.hot)
ax.contourf(X, Y, Z, zdir='z', offset=-2, cmap=plt.cm.hot)
ax.set_zlim(-2, 2)

plt.show()

トップページに戻る
inserted by FC2 system