如何在 matplotlib 中绘制 3D 图,其中仅使用一个变量评估两个函数?
How to do a 3D plot in matplotlib where two functions are evaluated with only one variable?
我找到的所有 3D 绘图示例都是 X,Y = data 的形式,f(X,Y) 是绘图函数。我需要的是一个 3D 图,其中 X 包含数据点,而 Y = f(X) 和 Z = g(X) 显示在各自的轴上。有办法吗?
IIUC,您可以在 DataFarme
上设置 x_points
,然后在 DataFrame
上应用 function_y
和 function_z
,然后绘制如下所示的点:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def create_Y(x):
return x**2 + 2*x - 10
def create_Z(x):
return np.sin(x)
df = pd.DataFrame({'X': np.linspace(0.0, 3.0, num=500)})
df['Y'] = df['X'].apply(create_Y)
df['Z'] = df['X'].apply(create_Z)
fig = plt.figure(figsize=(12,7))
ax = fig.add_subplot(projection = '3d')
ax.plot(xs = df['X'], ys = df['Y'],zs = df['Z'])
plt.show()
输出:
我找到的所有 3D 绘图示例都是 X,Y = data 的形式,f(X,Y) 是绘图函数。我需要的是一个 3D 图,其中 X 包含数据点,而 Y = f(X) 和 Z = g(X) 显示在各自的轴上。有办法吗?
IIUC,您可以在 DataFarme
上设置 x_points
,然后在 DataFrame
上应用 function_y
和 function_z
,然后绘制如下所示的点:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
def create_Y(x):
return x**2 + 2*x - 10
def create_Z(x):
return np.sin(x)
df = pd.DataFrame({'X': np.linspace(0.0, 3.0, num=500)})
df['Y'] = df['X'].apply(create_Y)
df['Z'] = df['X'].apply(create_Z)
fig = plt.figure(figsize=(12,7))
ax = fig.add_subplot(projection = '3d')
ax.plot(xs = df['X'], ys = df['Y'],zs = df['Z'])
plt.show()
输出: