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

时间:2017-05-20 22:03:56

标签: python matplotlib

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

enter image description here

是否有一种干净的方法可以不在我的情节限制之外绘制尾巴?我知道我可以将数据更改为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')`

修剪后,我可以制作以下图表,

enter image description here

1 个答案:

答案 0 :(得分:2)

以您nan的方式使用<form action = "" method = "post"> <input type = "text" name = "tbox_phone" placeholder = "phone" onkeyup="checker_phone(this.value)"> <div id = "msg"></div> <input type = "submit" name = "button_submit" value = "submit"> </form> 屏蔽数据是一个很好的实用解决方案。

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

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