首页 > 解决方案 > 我想使用具有不同范围的输入变量创建一个 3D 曲面图

问题描述

我已收到答案,但由于没有足够的细节,问题已关闭。我正在添加更多信息,以防这对某人有所帮助。

我发布了我正在处理的功能的简化版本。我给出了:f(q, t) = k*q(1-t),其中 k 只是一些预定义的常数。当 q 和 t 位于不同的间隔时,我想为所有 q 和 t 创建一个 f(q, t) 的 3D 曲面图。

q 在单位区间上,t 可以是从 0 到某个正值 z(不包括 1)的任何值。

我发现了类似的问题和答案,但它们解决了相同区间的变量。即使在查看指南之后,有些步骤也不清楚。具体来说,我不知道如何组合 q 的区间,因为我是新手,不知道还要搜索什么。

我之前只用 excel 数据完成了基本的 2D 绘图,所以除了定义函数之外,我不知道从哪里开始。希望这对于将来有类似问题的人来说足够详细。

标签: pythonmatplotlib

解决方案


import numpy as np
import matplotlib.pyplot as plt

%matplotlib inline

def f(x, y):
    return 2 * x * (1 - y)

x = np.linspace(0, 1, 50)
y = np.union1d(np.linspace(0, 0.99, 50), np.linspace(1.01, 2, 50)) 


X, Y = np.meshgrid(x, y)
Z = f(X, Y)
fig = plt.figure(figsize=(12,8))
ax = plt.axes(projection='3d')
ax.contour3D(X, Y, Z, 100, cmap='binary')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z');

基本上,您只需要调整此处给出的示例: https ://jakevdp.github.io/PythonDataScienceHandbook/04.12-three-dimensional-plotting.html 。该脚本是不言自明的。


推荐阅读