试图在3D matplotlib中绘制多元函数;返回空图 [英] Trying to plot multivariate function in 3D matplotlib; returns empty figure

查看:226
本文介绍了试图在3D matplotlib中绘制多元函数;返回空图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to plot a function F(x1,x2) in 3D matplotlib, follwoing a tutorial from here: http://glowingpython.blogspot.com/2012/01/how-to-plot-two-variable-functions-with.html

一旦我尝试运行代码,该图将显示为空,甚至看不到轴输出.我想知道是否有人能弄清楚这种行为背后的原因.我正在使用python 2.7

Once I try to run the code, the figure turns out to be empty, not even the axes output is seen. I was wondering if anyone could figure out the resaon behind this behavior. I am using 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()

推荐答案

您的代码对我有用.我只需要等待计算机完成计算即可.较长的计算是由于x1x2的大小.尝试更改这些行:

Your code works for me. I just needed to wait till the computer will finish the computation. The long computation is because of the size of x1 and x2. Try to change these lines:

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.我建议您安排进口.您只需要以下内容:

p.s. I advise you to arrange your imports. You only need the following:

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

这篇关于试图在3D matplotlib中绘制多元函数;返回空图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆