的3d scatter plot需要的x,y和z參數:如果你試圖繪製ž數據[:,2]的X數據(3分)函數[:,0]和y數據[:,1],當xlim3d,ylim3d,zlim3d設置正確時,您將看到3個點。這可以通過將它們設置爲MIN()和各X,Y,Z值的最大值()來完成:
import matplotlib as mpl
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
data=np.array([[1,10,100],[10,1,1],[2,20,82]])
fig=plt.figure()
ax=Axes3D(fig)
ax.set_xlim3d(data[:,0].min(),data[:,0].max())
ax.set_ylim3d(data[:,1].min(),data[:,1].max())
ax.set_zlim3d(data[:,2].min(),data[:,2].max())
ax.xaxis.set_scale('log')
ax.yaxis.set_scale('log')
ax.zaxis.set_scale('log')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.scatter(data[:,0],data[:,1],data[:,2])
plt.show()
現在,如果你想繪製的數據陣列中的3D方式,在這種情況下9點,你需要各自的x軸和y軸。這可以通過np.meshgrid()完成。在這個例子中,我設置了x,y等距[1,2,3]。
import matplotlib as mpl
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
data=np.array([[1,10,100],[10,1,1],[2,20,82]])
datax=np.array([1,2,3])
datay=np.array([1,2,3])
dataxM,datayM = np.meshgrid(datax, datay)
fig=plt.figure()
ax=Axes3D(fig)
ax.set_xlim3d(datax.min(),datax.max())
ax.set_ylim3d(datay.min(),datay.max())
ax.set_zlim3d(data.min(),data.max())
ax.xaxis.set_scale('log')
ax.yaxis.set_scale('log')
ax.zaxis.set_scale('log')
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')
ax.scatter(dataxM,datayM,data)
plt.show()
你一次只看到一部分情節意味着什麼?三個點中只有一個點?擺脫'set_(you_name_it)lim3d'應該給你所有的點。 –
也見:https://github.com/matplotlib/matplotlib/issues/209 – tacaswell
它就像是如果情節比帆布大,不幸的是我不能附上數字:( – joc