2011-12-10 13 views

答えて

11

私はstem3のmatplotlibに直接相当するものは認識していません。ただ、従来のプロットで、

import matplotlib.pyplot as plt 
import mpl_toolkits.mplot3d.art3d as art3d 
import numpy as np 

fig = plt.figure() 
ax = fig.add_subplot(1, 1, 1, projection='3d') 

N = 100 
theta = np.linspace(0, 2*np.pi, N, endpoint=False) 
x = np.cos(theta) 
y = np.sin(theta) 
z = range(N) 
for xi, yi, zi in zip(x, y, z):   
    line=art3d.Line3D(*zip((xi, yi, 0), (xi, yi, zi)), marker='o', markevery=(1, 1)) 
    ax.add_line(line) 
ax.set_xlim3d(-1, 1) 
ax.set_ylim3d(-1, 1) 
ax.set_zlim3d(0, N)  
plt.show() 
unutbu年代として

enter image description here

+1

+1。これは、Matlabのページの例よりも優れています。小さなボールをラインの上に置くことも可能ですか? – EOL

+1

これを追求する刺激を与えてくれてありがとう。最初は散布図をオーバーレイする必要があると思っていましたが、[マーカー](http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_marker)を設定して[ set_markevery(2)](http://matplotlib.sourceforge.net/api/artist_api.html#matplotlib.lines.Line2D.set_markevery)も実行できます。 – unutbu

+0

優れた答え。 +1 – ptomato

3

:しかし、Line3D Sを使用して(少なくともその基本的な形をしている)、このような数字を描くことは難しいことではありません

In [20]: from mpl_toolkits.mplot3d import Axes3D 
In [21]: fig = figure() 
In [22]: ax = fig.add_subplot(111, projection='3d') 
In [23]: x = [2,4,1,3] 
In [24]: y = [3,5,6,7] 
In [25]: z = [4,5,6,7] 
In [26]: for xx,yy,zz in zip(x,y,z): plot([xx,xx],[yy,yy],[0,zz], '-') 

enter image description here

関連する問題