matplotlib (mplot3d) - 怎样拉伸/缩短坐标轴的长度
首先用python的matplotlib库画一个图像。 代码如下:
from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = Axes3D(fig) theta = np.linspace(-4 * np.pi, 4* np.pi, 100) z = np.linspace(-2, 2, 100) r = z ** 2 + 1 x = r * np.sin(theta) y = r * np.cos(theta) ax.plot(x, y , z) plt.show()
上面的代码作出的图如下所示:
如果要拉伸z轴,则可以添加如下代码改变z轴与其他轴的尺寸比例
ax.get_proj = lambda: np.dot(Axes3D.get_proj(ax), np.diag([0.5, 0.5, 1, 1]))
整合代码如下:
from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = Axes3D(fig) theta = np.linspace(-4 * np.pi, 4* np.pi, 100) z = np.linspace(-2, 2, 100) r = z ** 2 + 1 x = r * np.sin(theta) y = r * np.cos(theta) ax.get_proj = lambda: np.dot(Axes3D.get_proj(ax), np.diag([0.5, 0.5, 1, 1])) ax.plot(x, y , z) plt.show()
如果要改变其他轴或者拉伸/缩短不同的尺寸,只需要改变对应np.diag里的数组大小即可。
参考:
