2014-10-07 21 views
5

Matplotlib'de bir 3B dağılım grafiğinde hata çubukları çizmenin bir yolunu bulamıyorum. Temelde,Matplotlib'de 3B arsaya hata çubukları ekleme

from mpl_toolkits.mplot3d import axes3d 
import matplotlib.pyplot as plt 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
X, Y, Z = axes3d.get_test_data(1) 
ax.scatter(X, Y, zs = Z, zdir = 'z') 

Ben

ax.errorbar(X,Y, zs = Z, dY, dX, zserr = dZ) 

gibi bir şey arıyorum aşağıdaki kod parçası için mplot3d bunu yapmanın bir yolu var mı? Değilse, bu işleve sahip başka kütüphaneler var mı? İşte

forumda http://mple.m-artwork.eu/home/posts/simple3dplotwith3derrorbars taraftaki örnek açıkça mevcuttur

+0

Kendini her çevresinde küçük çizgiler point çizmek veya denemek zorunda düşünüyorum – mdurant

+0

hata çubukları çizmek için 3D titreme almak için Bu kesinlikle bir geçici çözüm, son çare olarak akılda tutacağım. –

+0

Matplotlib forumlarında iletişim kurmaya değer, geliştirme aşamasında böyle bir işlev olabilir. Değilse ve makul bir çözüm bulursanız, eminim sizden duymaktan memnun olurlar. – mdurant

cevap

3

kodudur ama yerleşik olmayan işlevsellik:

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

fig = plt.figure(dpi=100) 
ax = fig.add_subplot(111, projection='3d') 



#data 
fx = [0.673574075,0.727952994,0.6746285] 
fy = [0.331657721,0.447817839,0.37733386] 
fz = [18.13629648,8.620699842,9.807536512] 

#error data 
xerror = [0.041504064,0.02402152,0.059383144] 
yerror = [0.015649804,0.12643117,0.068676131] 
zerror = [3.677693713,1.345712547,0.724095592] 

#plot points 
ax.plot(fx, fy, fz, linestyle="None", marker="o") 

#plot errorbars 
for i in np.arange(0, len(fx)): 
    ax.plot([fx[i]+xerror[i], fx[i]-xerror[i]], [fy[i], fy[i]], [fz[i], fz[i]], marker="_") 
    ax.plot([fx[i], fx[i]], [fy[i]+yerror[i], fy[i]-yerror[i]], [fz[i], fz[i]], marker="_") 
    ax.plot([fx[i], fx[i]], [fy[i], fy[i]], [fz[i]+zerror[i], fz[i]-zerror[i]], marker="_") 

#configure axes 
ax.set_xlim3d(0.55, 0.8) 
ax.set_ylim3d(0.2, 0.5) 
ax.set_zlim3d(8, 19) 

plt.show() 
+0

Yeap, hata çubuklarını bu şekilde çekmek hala bunu yapmanın tek yolu gibi görünüyor. Çok düzgün bir örnek, kabul edildiği gibi işaretleyeceğim. –

İlgili konular