【问题标题】:Plot f(X, Y) with multiple parameters in python在python中绘制具有多个参数的f(X,Y)
【发布时间】:2017-05-12 15:06:26
【问题描述】:

我在这里有非常具体的任务。可以说我有 5 个变量的函数。我想制作一个 3d 图,其中我将 2 个变量作为变量,3 个变量作为固定参数。这是一个例子:

import matplotlib.pyplot as plt
import matplotlib
from mpl_toolkits.mplot3d import axes3d

import numpy

#desired function is for example f(x, y, {a,b,c}) = x*a/((y+b)*(y+c))
a = 3
b = 8.5
c = 3.1
x = [i for i in range(-10,10,1)]
y = x

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

#this part of code is wrong
Z = X*a / ((Y+b)*(Y+c))

让我们像 here 那样绘制它。

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
surf = ax1.plot_surface(X, Y, Z, rstride = 5, cstride = 5, 
       cmap = matplotlib.cm.jet)
fig.colorbar(surf)
plt.show()

感谢您的任何提示或帮助!

【问题讨论】:

  • 这里没有问题。
  • 对不起,我的代码对我不起作用,但它适用于另一个 python 发行版,所以它可能是版本问题。
  • 怎么没用?将所有这些信息添加到问题本身,不要将其发布在 cmets 中。 #1)我们不是这里的读者。 #2) 你的问题本身应该是有效的,没有 cmets。

标签: python matplotlib


【解决方案1】:

ax1 上有一个未定义的错误。 此编辑后的代码应该可以工作:

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

#desired function is for example f(x, y, {a,b,c}) = x*a/((y+b)*(y+c))
a = 3
b = 8.5
c = 3.1
x = [i for i in range(-10,10,1)]
y = x

X, Y = numpy.meshgrid(x, y)
Z = X*a / ((Y+b)*(Y+c))

fig = plt.figure()
ax = fig.add_subplot(111, projection = '3d')
surf = ax.plot_surface(X, Y, Z, rstride = 5, cstride = 5, \
       cmap = matplotlib.cm.jet)

fig.colorbar(surf)
plt.show()

【讨论】:

  • 我完全错过了它。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
相关资源
最近更新 更多