matplotlib数字的共同起源

时间:2013-09-30 21:14:17

标签: matplotlib

我正在使用matplotlib构建一个三维散点图,但无法使所生成的图形具有所有三个轴的共同原点。我怎么能这样做?

我的代码(到目前为止),我没有实现轴规范的任何定义,因为我对Python很新:

  from mpl_toolkits.mplot3d.axes3d import Axes3D
  import matplotlib.pyplot as plt


  # imports specific to the plots in this example
  import numpy as np
  from matplotlib import cm
  from mpl_toolkits.mplot3d.axes3d import get_test_data

  def randrange(n, vmin, vmax):
  return (vmax-vmin)*np.random.rand(n) + vmin

  # Same as wide as it is tall.
  fig = plt.figure(figsize=plt.figaspect(1.0))


  ax = fig.add_subplot(111, projection='3d')

  n = 512

  xs = np.random.randint(0, 10, size=n)
  ys = np.random.randint(0, 10, size=n)
  zs = np.random.randint(0, 10, size=n)
  colors = np.random.randint(0, 10, size=n)
  scat = ax.scatter(xs, ys, zs, c=colors, marker='o')

  ax.set_xlabel('X Label')
  ax.set_ylabel('Y Label')
  ax.set_zlabel('Z Label')


  fig.colorbar(scat, shrink=0.5, aspect=10)

  plt.show()

2 个答案:

答案 0 :(得分:0)

可能你的意思如下(来自Mathematica):

Mathematica

目前我只能绘制一些以(0,0,0)为中心的线:

xline=((min(data[:,0]),max(data[:,0])),(0,0),(0,0))
ax.plot(xline[0],xline[1],xline[2],'grey')
yline=((0,0),(min(data[:,1]),max(data[:,1])),(0,0))
ax.plot(yline[0],yline[1],yline[2],'grey')
zline=((0,0),(0,0),(min(data[:,2]),max(data[:,2])))
ax.plot(zline[0],zline[1],zline[2],'grey')

结果如下:

Matplotlib

答案 1 :(得分:0)

如果你放行

ax.view_init(30,220)

之前

plt.show()

你应该得到你想要的x-y飞机。不知道如何将该平面移动到z = 0。