在 matplotlib 中修剪 3d 绘图之外的数据

Aus*_*ney 5 python matplotlib

我有一组 PDF,需要为 PDF 域的某个部分绘制。但是,当我在 3d 绘图上绘制线条时,每个 PDF 都会有尾部,

在此处输入图片说明

有没有一种干净的方法来不绘制发生在我的情节限制之外的尾巴?我知道我可以将数据更改为 NaN 以达到相同的效果,但我想在 matplotlib 中执行此操作。这是我当前的解决方法代码,

`# trim the data
y = np.ones(PDF_x.shape)*PDF_x
y[y>95]= np.nan
y[y<75]= np.nan


# plot the data
fig = plt.figure()
ax = fig.gca(projection='3d')
for i in range(PDF_capacity.shape[1]):
    ax.plot(life[i]*np.ones((PDF_x.shape)),y,PDF_capacity[:,i], label='parametric curve')

# set the axis limits
ax.set_ylim(75,95)

# add axis labels
ax.set_xlabel('charge cycles to failure point of 75% capacity')
ax.set_ylabel('capacity at 100 charge cycles')
ax.set_zlabel('probability')`
Run Code Online (Sandbox Code Playgroud)

修剪后,我可以制作以下情节,

在此处输入图片说明

Imp*_*est 4

nan按照您的方式屏蔽数据是一个很好且实用的解决方案。

由于 matplotlib 3D 绘图是到 2D 空间的投影,因此很难实现自动裁剪。虽然我确实认为这是可能的,但我不相信这值得付出努力。首先,因为您需要以不同的方式处理不同类型的图,其次,因为至少在某些情况下,屏蔽数据可能仍然是最佳选择。现在,仅仅为了完成可以在一两行中手动完成的相同事情而对绘图对象进行复杂的子类化可能是矫枉过正的。

因此,我的明确建议是使用您已有的解决方案。特别是到目前为止它似乎没有任何缺点。