2013-06-17 9 views
0

Я только что начал с Python, и я бы перевел этот пример с MATLAB на Python, но я не нашел эквивалент в Python.эквивалент от MATLAB до 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

Вы смотрели вокруг для пакетов, которые могут сделать ... независимо от 'поверхности()' делает? –

+0

http://scipy-lectures.github.io/intro/matplotlib/matplotlib.html – YXD

+1

Возможно, вы можете пропустить 'load clown' ... – Shai

ответ

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() 
+0

Это! Спасибо вам! – user2492523