matplotlib 绘制带断点的三维线图

b4lqfgs4  于 2023-05-01  发布在  其他
关注(0)|答案(1)|浏览(125)

我有三个数组,由以下几行组成:

x = np.tile(np.arange(0,200), 14)
y = np.random.randint(200, size=2800)
z = np.repeat(np.arange(1,15), 200)

我使用以下代码来绘制3D图:

ax = plt.axes(projection='3d')
ax.plot3D(x, z, y)

生成的图如下所示:

但是你可以看到中间有几条线连接着。如何在中间引入中断?

c3frrgcw

c3frrgcw1#

你不想画一条曲线,你想画14条不同的曲线,x总是一样的,z几乎一样,真正变化的是y
因此,我建议使用相同的x、相同的zys数组,形状为(14, 200),并在ys的行上使用枚举循环,如下所示

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
x = np.arange(0,200)
ys = np.sin(x*(0.4+0.6*np.random.rand(14))[:,None]/10)
z = np.ones(200)
fig, ax = plt.subplots(subplot_kw={"projection":"3d"})
for n, y in enumerate(ys): 
    ax.plot3D(x, z+n, y, color=['blue', 'red'][n%2])

相关问题