试图在3D matplotlib中绘制多变量函数;返回空图

时间:2016-10-05 19:05:13

标签: python-2.7 matplotlib mplot3d

我试图在3D matplotlib中绘制函数F(x1,x2),从这里开始教程: http://glowingpython.blogspot.com/2012/01/how-to-plot-two-variable-functions-with.html

一旦我尝试运行代码,图形变为空,甚至看不到轴输出。我想知道是否有人能够找出这种行为背后的反应。我正在使用python 2.7

from __future__ import division

from numpy import exp,arange
from pylab import meshgrid,cm,imshow,contour,clabel,colorbar,axis,title,show
import math 
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
from matplotlib import pylab
from numpy import arange,array,ones
from scipy import stats
import numpy
import matplotlib.ticker as mtick
import sys
import os


# the function that I'm going to plot
def z_func(x1,x2):
 return exp(-(1-x1)**2 - 100*((x2-x1**2)**2))


x1 = arange(5.0,-5.0,-0.01)
x2 = arange(-5.0,5.0,0.01)
X1,X2 = meshgrid(x1, x2) # grid of point
Z = z_func(X1, X2) # evaluation of the function on the grid


fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X1, X2, Z, rstride=1, cstride=1, cmap=cm.RdBu,linewidth=0, antialiased=False)

ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))

ax.set_xlabel('x-axis')
ax.set_ylabel('y-axis')
ax.set_zlabel('z-axis')
ax.view_init(elev=25, azim=-120)

fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()

1 个答案:

答案 0 :(得分:1)

您的代码适合我。我只需要等到计算机完成计算。长计算是因为x1x2的大小。尝试更改这些行:

x1 = arange(5.0,-5.0,-0.01)
x2 = arange(-5.0,5.0,0.01)

到以下几行:

x1 = arange(5.0,-5.0,-0.1)
x2 = arange(-5.0,5.0,0.1)

P.S。我建议你安排进口。您只需要以下内容:

from numpy import exp, arange
import matplotlib.pyplot as plt
from matplotlib.ticker import LinearLocator, FormatStrFormatter
from pylab import meshgrid
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm