2013-11-15 4 views
1

У меня проблемы с масштабированием осей 3d в matplotlib. Я нашел другие вопросы, но почему-то ответ, похоже, не работает. Вот пример код:Масштабные оси 3d в matplotlib

import matplotlib as mpl 
import numpy as np 
from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 

data=np.array([[0,0,0],[10,1,1],[2,2,2]]) 

fig=plt.figure() 
ax=Axes3D(fig) 
ax.set_xlim3d(0,15) 
ax.set_ylim3d(0,15) 
ax.set_zlim3d(0,15) 
ax.scatter(data[:,0],data[:,1],data[:,2]) 
plt.show() 

Кажется, он просто игнорирует команду ax.set ...

+1

это прекрасно работает для меня. Почему вы импортируете matplotlib? – joaquin

+2

кажется, что 'scatter' сбрасывает ось, вы можете поместить вызовы' ax.set ...' после вызова 'scatter'. –

ответ

0

В моем опыте, вы должны установить свои пределы оси после построения графика данных, в противном случае это будет выглядеть по вашим данным и отрегулируйте любые настройки осей, которые вы вводили до того, как это поместило все в рамке, до следующего удобного приращения вдоль осей, о которых идет речь. Если, например, вы устанавливаете пределы x-axis на +/- 400, но ваши данные выходят примерно на +/- 1700, а matplotlib решает маркировать ось x с шагом 500, он будет отображать данные относительно ось x, которая выходит на +/- 2000.

Так что в вашем случае, вы просто хотите изменить, что последний блок текста, как:

fig=plt.figure() 
ax=Axes3D(fig) 
ax.scatter(data[:,0],data[:,1],data[:,2]) 
ax.set_xlim3d(0,15) 
ax.set_ylim3d(0,15) 
ax.set_zlim3d(0,15) 
plt.show()