matplotlib 中不规则数据网格的 2D 曲面图

2 投票
1 回答
2234 浏览
提问于 2025-04-17 19:06

我正在尝试在一个二维表面图上绘制一些数据。这些数据表示一个T形样本上属性的变化。不过,我现在使用的方法(文档中的标准方法)是在整个方形网格上进行插值,这样就超出了T形部分的范围。

我想把插值限制在T形部分内部。

我猜这可以通过定义一个T形网格(或者你想要插值的任何形状)来实现,这样理解对吗?如果是的话,我该如何创建一个T形网格来进行插值呢?我在想把两个linspace数组拼接在一起以形成T形,但到现在为止一直失败 =/

非常感谢!

编辑 1)

普通网格:

xxxxxxxxx
xxxxxxxxx
xxxxxxxxx
xxxxxxxxx

我想要插值的区域形状:

xxxxxxxxx
xxxxxxxxx
000xxx000
000xxx000 

其中x是要进行插值的数据点,而0表示不应该进行插值的空白区域。

1 个回答

1

你可以用 np.nan 来填充你想要显示的数组:

>>> import matplotlib.pyplot as plt
>>> a = np.random.rand(100, 100)
>>> plt.imshow(a)
<matplotlib.image.AxesImage object at 0x03EEB030>
>>> plt.show()

这里插入图片描述

现在:

>>> a[50:, :25] = np.nan
>>> a[50:, 75:] = np.nan
>>> plt.imshow(a)
<matplotlib.image.AxesImage object at 0x040C81B0>
>>> plt.show()

这里插入图片描述

撰写回答