Python 修剪matplotlib中三维打印外部的数据
我有一套PDF,我需要为PDF域的某个部分绘制。然而,当我在3d绘图上绘制线条时,我会得到每个PDF的尾部 有没有一个干净的方法来不绘制超出我的绘图限制的尾部?我知道我可以将数据更改为NaNs以实现相同的效果,但我想在matplotlib中执行此操作。这是我当前的解决方案代码Python 修剪matplotlib中三维打印外部的数据,python,matplotlib,Python,Matplotlib,我有一套PDF,我需要为PDF域的某个部分绘制。然而,当我在3d绘图上绘制线条时,我会得到每个PDF的尾部 有没有一个干净的方法来不绘制超出我的绘图限制的尾部?我知道我可以将数据更改为NaNs以实现相同的效果,但我想在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 =
`# 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')`
`#修剪数据
y=np.ones(PDF_x.shape)*PDF_x
y[y>95]=np.nan
y[y以您的方式使用nan
屏蔽数据是一个很好且实用的解决方案
由于matplotlib 3D绘图是到2D空间的投影,因此很难实现自动剪裁。虽然我确实认为这是可能的,但我不认为这是值得的。首先,因为您需要以不同的方式处理不同类型的绘图,其次,因为至少在某些情况下,它可能会变成maskin数据仍然是最好的选择。现在,对绘图对象进行复杂的子类化,只是为了完成可以在一两行中手动完成的相同操作,这可能有些过分了
因此,我的明确建议是使用您已经拥有的解决方案。特别是因为到目前为止,它似乎没有任何缺点。是否有任何绘图属性会限制绘制的数据?例如xlim或ylim?我看不出有任何理由不对您已经拥有的nan
s(y[y>95]=np.nan
)使用掩蔽“我想”并不是一个很好的理由来说服某人在已经有无缺点的单行程序解决方案的事情上投入大量精力。我使用的是ax.set_ylim(75,95)
将绘图限制在规定的限制范围内,但是,这并不会将数据修剪到这些限制范围之间。@ImportanceOfBeingErnest,如果您认为matplotlib中不可能,也许我们可以将其作为解决方案?我非常肯定这是可能的,但我认为不值得付出努力,因为解决方案可能不可行这将涉及对matplotlib代码的深入研究。