可视化库-Matplotlib-3D图(第四天)

1. 画三维图片图 axes = Axes3D(fig)这一步将二维坐标转换为三维坐标,axes.plot_surface()

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

fig = plt.figure()
# 将二维转换为三维的情况
axes = Axes3D(fig)
x = np.arange(-4, 4, 0.25)
y = np.arange(-4, 4, 0.25)

X, Y  = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))
# 画三维曲面图,rstride=1, cstride=1表示曲面的一个方格的位置
axes.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
# 画出投影, zm表示投影的方向,offset表示投影所处位置,cmap表示使用的colormap
axes.contour(X, Y, Z, zm='Z', offset=-2, cmap='rainbow')
# 扩大z轴的范围使得图看起来更加的压缩
axes.set_zlim(-2, 2)
plt.show()

2. 构造三维坐标系的两种方法, 同时画三维曲线图ax=fig.add_subplot(111, projection='3d') ax = fig.gca(projection='3d'),同时画三维曲线图

# 构造坐标轴的方法1
fig = plt.figure()
# 构造了三维的坐标轴
ax = fig.add_subplot(111, projection='3d')
plt.show()

# 构造坐标轴的方法2
figure =  plt.figure()
ax = figure.gca(projection='3d')

theta = np.linspace(-4 * np.pi, 4*np.pi, 100)
z = np.linspace(-2, 2, 100)
r = z**2 + 1
x = np.sin(theta) * r
y = np.cos(theta) * r
ax.plot(x, y, z, color='r')
plt.show()

3. 画三维散点图 ax.plot   # plt.view_init(40, 20)进行视角的变化

np.random.seed(0)
# 用于生成随机点
def randrange(n, vmin, vmax):
    return (vmax-vmin)*np.random.randn(n) + vmin

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
n = 100

for c, m, zlow, zhigh in [('r', 'o', -50, -25), ('b', '^', -30, -5)]:
    xs = randrange(100, 23, 32)
    ys = randrange(100, 0, 100)
    zs = randrange(100, zlow, zhigh)
    ax.scatter(xs, ys, zs, marker=m, color=c)
# 进行视角的变化 plt.view_init(40, 20) plt.show()

4.画三维条形图(有一点问题)带有颜色编码的条形图

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

for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
    xs = np.arange(20)
    ys = np.random.rand(20)
cs = [c] * len(len(xs)) ax.bar(xs, ys, zs
=z, zdir='y', color=cs) plt.show()

猜你喜欢

转载自www.cnblogs.com/my-love-is-python/p/10239131.html