Построение кривой на поверхности сетки только по определенной оси - PullRequest
0 голосов
/ 04 февраля 2019

Я очень новичок в 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()

enter image description here

Теперь мне нужно построить кривую для X = 0 другим цветом, что означает кривую на той же поверхности вдоль воображаемой оси.surf = ax.plot_surface (0, Y, Z) не работает.У кого-нибудь есть опыт работы с таким сюжетом?

1 Ответ

0 голосов
/ 07 февраля 2019

Я предполагаю, что вы имели в виду, что вы хотите построить график 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()

enter image description here

...