日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

基于python,Matplotlib繪制函數的等高線與三維圖像_python

作者:夏小悠?? ? 更新時間: 2022-04-01 編程語言

本篇文章記錄一下函數的等高線及其三維圖像的可視化方法。

本例繪制的函數為:

1. 網格點

??在繪制曲線之前,先了解一下網格點的繪制。比如繪制一個3x3的網格,那么就需要9個坐標點:

(0,2)-----(1,2)-----(2,2)

(0,1)-----(1,1)-----(2,1)

(0,0)-----(1,0)-----(2,0)

??將其x軸和y軸坐標分開表示:

# x軸:
[[0, 1, 2],
[0, 1, 2],?
[0, 1, 2]]
# y軸:
[[0, 0, 0],
[1, 1, 1],?
[2, 2, 2]]

??在numpy中可以使用np.meshgrid()來生成網格點:

import numpy as np
import matplotlib.pyplot as plt

# 10x10
x = np.linspace(-1.5, 1.5, num=10)
y = np.linspace(-1.5, 1.5, num=10)

# generate grid
X, Y = np.meshgrid(x, y)
plt.plot(X, Y, marker='.', linestyle='')
plt.grid(True)
plt.show()

2. 等高線

??繪制等高線需要的數據有點的坐標位置(x, y)以及坐標的高度z,高度z就是將坐標點(x, y)帶入函數f ( x , y ) f(x, y)f(x,y)中計算得到的,在matplotlib中可以使用plt.contour()來繪制:

import numpy as np
import matplotlib.pyplot as plt


x = np.linspace(-1.5, 1.5, num=100)
y = np.linspace(-1.5, 1.5, num=100)
X, Y = np.meshgrid(x, y)
f = X * np.exp(-X**2 - Y**2)

fig = plt.figure()
plt.xlim(-1.5, 1.5)
plt.ylim(-1.5, 1.5)

# draw
ax = plt.contour(X, Y, f, levels=10, cmap=plt.cm.cool)
# add label
plt.clabel(ax, inline=True)
# plt.savefig('img1.png')
plt.show()

?

# add color
plt.contourf(X, Y, f, levels=10, cmap=plt.cm.cool)
# plt.colorbar()
# plt.savefig('img1.png')
plt.show()

?更多的api參數請參考官方文檔

3. 三維圖像

??函數的三維圖像的繪制需要的數據與等高線一樣,即坐標位置(x, y)以及坐標的高度z,在matplotlib中可以使用mpl_toolkits.mplot3d來繪制:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D


x = np.linspace(-1.5, 1.5, num=100)
y = np.linspace(-1.5, 1.5, num=100)
X, Y = np.meshgrid(x, y)
f = X * np.exp(-X**2 - Y**2)

fig = plt.figure()
ax = Axes3D(fig)
plt.xlim(-1.5, 1.5)
plt.ylim(-1.5, 1.5)

ax.plot_surface(X, Y, f, cmap=plt.cm.cool)
# plt.savefig('img1.png')
plt.show()

到此這篇關于基于python,Matplotlib繪制函數的等高線與三維圖像的文章就介紹到這了,更多相關Matplotlib繪制函數的等高線與三維圖像內容請搜索AB教程網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持AB教程網!

??有關mpl_toolkits.mplot3d的使用可以參考官方文檔

原文鏈接:https://blog.csdn.net/qq_42730750/article/details/122564379

欄目分類
最近更新