Don*_*beo 4 python plot matplotlib
我有一个矩阵S,具有60行和2000列。我需要此矩阵的3D图。这是我所做的:
S.dtype = 'float64'
S = sk.preprocessing.scale(S)
n, p = S.shape
X = np.arange(0, n)
Y = np.arange(0, p)
X, Y = np.meshgrid(X, Y)
def funz(x,y):
return S[x, y]
Z = funz(X, Y)
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
cmap=cm.RdBu,linewidth=0, antialiased=False)
ax.zaxis.set_major_locator(LinearLocator(10))
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
fig.colorbar(surf, shrink=0.5, aspect=5)
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是可行的,但从无法将其移动以更好地可视化的角度而言,该图太重了。我该如何解决?
特别是,我需要找到3d图的漂亮视图以将其另存为pdf图。
matplotlib没有“真实的” 3D绘图。通常,您会mayavi在复杂或较大的表面上使用类似的东西,而不是使用matplotlib。
作为一个简单的例子:
import numpy as np
from mayavi import mlab
x, y = np.linspace(-15, 15, 200), np.linspace(-15, 15, 200)
xx, yy = np.meshgrid(x, y)
z = np.cos(np.hypot(xx, yy)) + np.sin(np.hypot(xx + 5, yy + 5))
mlab.figure(bgcolor=(1,1,1))
# We'll use "surf" to display a 2D grid...
# warp_scale='auto' guesses a vertical exaggeration for better display.
# Feel free to remove the "warp_scale" argument for "true" display.
mlab.surf(x, y, z, warp_scale='auto')
mlab.show()
Run Code Online (Sandbox Code Playgroud)
