【问题标题】:Plotting a curve on the mesh surface along only a determined axis仅沿确定的轴在网格表面上绘制曲线
【发布时间】:2019-02-04 13:33:14
【问题描述】:

我是 Python 的新手,正在尝试在曲面上绘制一条曲线。

这是我到目前为止并在 s 域中绘制了一个曲面的地方:

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

x = np.linspace(-400, 0, 100)
y = np.linspace(-100, 100, 100)

X, Y = np.meshgrid(x,y)

fc=50
wc=2*np.pi*fc

s = X + Y*1j
Z= abs(1/(1+s/wc))

fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X, Y, Z)

ax.plot(X, Y, Z)
plt.ylabel('Im')
plt.show()

我现在需要用不同的颜色绘制 X = 0 的曲线,这意味着曲线沿着虚轴在同一表面上。 surf = ax.plot_surface(0, Y, Z) 不起作用。有没有人有这种情节的经验?

【问题讨论】:

  • 您可能需要找出曲面与平面 x=0 的交点。
  • 你能帮我解决这个问题吗:(

标签: python mesh surf


【解决方案1】:

我假设您的意思是您想要绘制 y=0 而不是 x=0(因为 x=0 会很无聊)。

由于您想绘制数据的单个切片,因此不能使用 meshgrid 格式(或者如果可以,它需要一些我不想弄清楚的奇怪索引)。

这是我绘制 y=0 切片的方式:

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

x = np.linspace(-400, 0, 100)
y = np.linspace(-100, 100, 100)

X, Y = np.meshgrid(x,y)

fc=50
wc=2*np.pi*fc

s = X + Y*1j
Z= abs(1/(1+s/wc))

fig = plt.figure()
ax = fig.gca(projection='3d')

surf = ax.plot_surface(X, Y, Z)

# create data for y=0
z = abs(1/(1+x/wc))
ax.plot(x,np.zeros(np.shape(x)),z)

plt.ylabel('Im')
plt.show()

【讨论】:

  • 非常感谢,但我需要 x = 0 来显示稳态的低通滤波器曲线。您也可以将其添加到您的答案中吗?我试图修改但没有工作
  • 是 z = abs(1/(1+y*1j/wc)) ax.plot(np.zeros(np.shape(x)),y,z,'r')
  • 是的,这会得到你想要的。请注意,在这种情况下,您的 x 和 y 长度相同,但最好使用 ax.plot(np.zeros(np.shape(y)),y,z,'r')
  • 非常感谢朋友!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多