簡體   English   中英

在3D中顯示2D Sinewaves的圖像

[英]Display image of 2D Sinewaves in 3D

我已經生成了1D正弦波,然后每行重復一次,得到2D正弦波。 我可以在二維空間中展示這一點,但我需要制作一個3D圖,顯示峰和谷以及它們之間的振盪模式。

import numpy as np
import matplotlib.pyplot as plt
N = 256
x = np.linspace(-np.pi,np.pi, N)
sine1D = 128.0 + (127.0 * np.sin(x))
sine1D = np.uint8(sine1D)
sine2D = np.tile(sine1D, (N,1))
plt.imshow(sine2D, cmap='gray')

正如@Warren Weckesser所說,如何使用mplot3d工具包示例庫 ,例如正弦波幅度的表面圖作為時間和相位的函數:

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
import numpy as np

fig = plt.figure()
ax3d = fig.add_subplot(111, projection='3d')

# Make the X, Y meshgrid instead of np.tile
xs = np.linspace(-2*np.pi, 2*np.pi, 200)
ys = np.linspace(-2*np.pi, 2*np.pi, 200)
tau, phi = np.meshgrid(xs, ys) 
# Z evaluation
amp = np.sin(tau+phi) 

ax3d.set_xlabel(r'$\tau$')  # tau = omega*t -> adimensional time
ax3d.set_ylabel(r'$\phi$')  # phi -> phase
ax3d.set_zlabel(r'$amp$')   # signal amplitude

surf = ax3d.plot_surface(tau, phi, amp,cmap=cm.inferno)
fig.colorbar(surf)

這給了:

3d_sinewave_surface

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM