私はPythonに慣れていて、3Dサーフェスプロットをしたいと思っています。 私は3つの変数x、y、zとIntensity関数I = I(x、y、z)を持っています。私は、特定のスライスz = 250を選び、x方向とy方向についてdsitributionをプロットしたいと思います。 問題は、私はz値のスライスを選ぶ方法を知らないということです。 ValueError:形状の不一致:オブジェクトはPythonサーフェスプロット値エラー
単一形状に放送することができない私はどのように行うのですか、私が試したすべてのバージョンは、ここではいくつかのエラー
iは
import pandas as pd
import numpy as np #NumPy
import scipy as sp #SciPy
import matplotlib as mpl #Matplotlib(2D/3D)
import matplotlib.pyplot as plt #Matplotlib's pyplot
from pylab import * #Matplotlib's pylab
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline
x = linspace(-4,4,50) # units mm
y = linspace(-4,4,50) # units mm
# define beam parameters
I_0 = 1e0 # intensity
lambda_1 = 800e-9 # wavelength
w_0 = 1.5 # beam waist
z_r = pi*w_0**2*1e-6/lambda_1 # Rayleigh length in units mm
z = linspace(-4,4,500)*z_r
# calculate intensity profile
X,Y,Z = meshgrid(x,y,z)
w = w_0 *sqrt(1+(Z/z_r)**2)
I = I_0*((w_0/w)**2)*exp(-2*(X**2+Y**2)/(w**2))
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, I[:,:,250], cmap=cm.coolwarm,linewidth=0,antialiased=False)
show()
を持っているものであるIIN私はエラーを取得終了しましたそれは正しくですか? 編集:jupiterノートブックでpython 3.6を使用しています
あなたは私の形状を確認することができますか? – Dschoni
'meshgrid(x、y、z)'は3つの3D配列を作成します。 Matplotlibは入力として2D配列を必要とします。 – ImportanceOfBeingErnest
'X'と' Y'も3D配列です。 – Jurgy