这是我的代码:
import numpy as np
x, y = np.meshgrid(np.linspace(-1, 1, 101), np.linspace(-1, 1, 101))
z = x/y
显然,尽管z
包含的大部分是数字,但它也包含一些inf
和NaN
我想用matplotlib绘制结果曲面
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z)
然而,由于Nan
和inf
的原因,这有点混乱
我正在寻找一种方法让matplotlib只“跳过”这些,即不绘制与z
中的异常相对应的点
我认为可以这样做的一种方法是如下掩蔽数组:
mask = np.isfinite(z)
ax.plot_surface(x, y, z[mask])
但是,掩蔽数组会导致维数损失,即z[mask]
现在是一维数组,因此matplotlib返回ValueError
。如何在掩蔽数组时避免维数损失,或者有更简单的方法让matplolib“跳过”这些异常?谢谢
我认为,最简单的方法就是限制z轴
另一种方法是,如果要遮罩z值:
相关问题 更多 >
编程相关推荐