首页 文章

相当于从MATLAB到Python

提问于
浏览
0

我刚刚开始使用Python,我将这个例子从MATLAB翻译成Python,但我还没有找到Python中的等价物 .

https://www.mathworks.com/help/matlab/ref/surface.html

load clown
surface(peaks,flipud(X),...
    'FaceColor','texturemap',...
    'EdgeColor','none',...
    'CDataMapping','direct')
colormap(map)
view(-35,45)

谢谢!

1 回答

  • 2

    Matplotlib几乎提供了Matlab所做的所有绘图选项 . 表面图也可以这样做:http://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#surface-plots

    要加载图像,scipy有一个PIL包装器(不包括小丑,抱歉),它加载matplotlib兼容的numpy数组 .

    总而言之,您需要以下软件包:numpy,scipy,matplotlib和PIL . 这四个库的组合应该可以满足您的所有需求 . 还可以查看这些库的pylab接口,因为它与Matlab非常相似 .

    做我认为你想做的事情的例子:

    from mpl_toolkits.mplot3d import Axes3D
    from scipy.misc import imread
    from matplotlib.pyplot import figure, show
    from numpy import linspace, meshgrid, sqrt, sin, mean, flipud
    
    clown = imread('clown.png')
    fig = figure()
    ax = fig.gca(projection='3d')
    X = linspace(-5, 5, clown.shape[0])
    Y = linspace(-5, 5, clown.shape[1])
    X, Y = meshgrid(X, Y)
    R = sqrt(X**2 + Y**2)
    Z = sin(R)
    clown = clown.swapaxes(0,1) / 255. # meshgrid orients axes the other way around, scaling of rgb to [0-1]
    ax.plot_surface(X, Y, Z, facecolors=flipud(clown))
    ax.view_init(45,-35) # swapped wrt matlab
    show()
    

相关问题