MATLABからsurfコマンドをmatplotlibのplot_surfaceコマンドに変換したいと思います。カラーmatplotlib plot_surfaceコマンド(サーフェスグラデーションあり)
cmapの機能をplot_surfaceコマンドで使用すると、グラデーションを使用してサーフェスを色付けすることができます。ここで
は、このようなコマンドからの図は、ここで見つけることができMATLABスクリプト
% Matlab Commands
x = -5:.25:5; y = x
[x,y] = meshgrid(x);
R = sqrt(x.^2 + y.^2);
Z = sin(R)
surf(x,y,Z,gradient(Z))
です。 pythonを使用して、私はグラデーションで表面を色付けすることができません同様の機能を作成するために、matplotlibの場合はここで
(http://www.mathworks.com/help/techdoc/visualize/f0-18164.html#f0-46458)はのpythonザ・スクリプト です。
Traceback (most recent call last):
File "<ipython console>", line 1, in <module>
File "C:\Python26\lib\site-packages\spyderlib\widgets\externalshell\startup.py", line 122, in runfile
execfile(filename, glbs)
File "C:\Documents and Settings\mramacha\My Documents\Python\Candela\tmp.py", line 13, in <module>
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=gradient(Z), linewidth=0, antialiased=False)
File "C:\Python26\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 729, in plot_surface
polyc = art3d.Poly3DCollection(polys, *args, **kwargs)
File "C:\Python26\lib\site-packages\mpl_toolkits\mplot3d\art3d.py", line 344, in __init__
PolyCollection.__init__(self, verts, *args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\collections.py", line 570, in __init__
Collection.__init__(self,**kwargs)
File "C:\Python26\lib\site-packages\matplotlib\collections.py", line 86, in __init__
cm.ScalarMappable.__init__(self, norm, cmap)
File "C:\Python26\lib\site-packages\matplotlib\cm.py", line 155, in __init__
self.cmap = get_cmap(cmap)
File "C:\Python26\lib\site-packages\matplotlib\cm.py", line 126, in get_cmap
if name in cmap_d:
TypeError: unhashable type: 'list'
どれ入力は参考になる:
# Python-matplotlib Commands
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=gradient(Z), linewidth=0, antialiased=False)
plt.show()
は、私は、次のエラーメッセージが表示されます。あなたは勾配の大きさからマッピングされた色をしたいよう
Praboo
ファンタスティックここでコードがあります(私は別の方法があると思いますが、最大でマグニチュードを分割することは非常に簡単です)
。ありがとうポール。 – praboo
カラーマップの変更を反映するために、このプロットにどのようにカラーバーを追加しますか? – praboo
@praboo ScalarMappableをインスタンス化する必要があります。これは興味深い重要な話題であり、これが別の質問として導入された場合、コミュニティは十分に役立つだろう。 – Paul