在matplotlib中缩放轴3d

时间:2013-11-15 20:12:07

标签: python matplotlib

我在matplotlib中遇到缩放轴3d的问题。我找到了另一个问题,但不知怎的答案它似乎不起作用。以下是示例代码:

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命令......

2 个答案:

答案 0 :(得分:1)

根据我的经验,您必须在绘制数据后设置轴限制,否则它将查看您的数据并调整您之前输入的任何轴设置以使其全部符合框架,并沿轴进行下一个方便的增量有问题。例如,如果您将x轴限制设置为+/- 400但数据输出大约+/- 1700并且matplotlib决定以500为增量标记x轴,那么它将显示相对于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()

答案 1 :(得分:0)

ColorOutOfSpace 的方式很好。但是,如果您想自动缩放,则必须搜索数据中的最大值和最小值,并使用这些值进行缩放。

min = np.amin(data)  # lowest number in the array
max = np.amax(data)  # highest number in the array

ax.set_xlim3d(min, max)
ax.set_ylim3d(min, max)
ax.set_zlim3d(min, max)