2012-11-26 7 views
6

私は、matplotlibによって生成された線の3次元プロットを持っています。特定のxy(またはyz、xz)スライスに画像をオーバーレイしたいと思います。どのように私はそれをPythonを使って行うのですか?ありがとう。pythonを使用した3Dプロットのイメージオーバーレイ

私はのような単純な3Dプロットコード持っている:私はまた、画像「イム」(2次元配列)を持っているので、私のようなもの必要

fig = plt.figure(1),<br> 
ax = Axes3D(fig)<br> 
ax.plot(f[:,0], f[:,1], f[:,2], color='r') 

を:私は

ax.overlay(Im, slice='xy', sliceNo=10) 
+0

は、あなたがこれまでに試してみましたか?あなたの質問にあなたのソースコードを含めてください。 –

+0

私は全くオプションを見つけることができませんでした。 – ahmethungari

答えて

19

を一旦、背景画像の上に3D表面プロットオーバーレイ:

3d surface plot on top of background image

これは類似している場合あなたが望むものに、私はそれから実際の例を作り出そうとすることができます。そして、もちろん

from pylab import * 
from mpl_toolkits.mplot3d import Axes3D 
from matplotlib.cbook import get_sample_data 
from matplotlib._png import read_png 
fn = get_sample_data("lena.png", asfileobj=False) 
img = read_png(fn) 
x, y = ogrid[0:img.shape[0], 0:img.shape[1]] 
ax = gca(projection='3d') 
ax.plot_surface(x, y, 10, rstride=5, cstride=5, facecolors=img) 
show() 

、ストライド値は、より良い画質のための1に減少することができますが、:あなたはちょうどあなたが表面プロットを使用することができ、3D空間内で画像を表示したい場合は別の方法として、

図面は、上記のコードから)=

結果の画像をloooongかかります。

enter image description here

+0

曲線の3dプロットと組み合わせた2番目の例は、私が望むものです。どうもありがとう。私は、単純にホールド(真)オプションを使って画像上に曲線を描くことができると思います... – ahmethungari

+0

ありがとうございました。しかし、私は1つの質問があります、イメージを3Dデータプロットの下に置く方法はありますか? [here](http://stackoverflow.com/questions/22959472)では、画像は 'bar3d'上に浮遊しています。 – Jeon

+0

@torfbolt最初の例についてもっと知りたいと思います。私はx、y平面(z = 0)にとどまりたい画像を持っています。その画像の上に私の3Dカーブになるでしょう。どうやってするの? – FaCoffee

関連する問題