如何用Python绘制数据在x轴不均匀分布的2D矩阵?

3 投票
2 回答
1487 浏览
提问于 2025-05-01 02:40

我正在尝试使用matplotlib库绘制一个二维矩阵(这是我目前唯一会用的库)。不过,matplotlib.pyplot.imshow(matrix)这个函数假设数据在每个轴上是均匀分布的,但我想绘制的数据并不是这样。我的数据是这样的:矩阵的第一列数据对应于x=0这一条线,第二列的数据在x=1.27的位置,而不是x=1,第三列的数据在x=1.42的位置,而不是x=2,依此类推。

顺便说一下,数据在y轴上是均匀分布的。

所以我在想有没有办法可以按照我希望的方式来绘制这个图?谢谢你们的时间和热心帮助!

------ 编程新手

更新: 首先,感谢大家的建议!我尝试了这些方法,以下是输出结果: enter image description here

这是通过contourf绘制的图,但结果并不是我预期的那样。pcolormesh的输出也不理想。 我想绘制的是地震波迹线的数据,这些数据代表地下结构。我希望能绘制出这样的图: enter image description here

如果有任何建议可以帮助我实现这个目标,请给我一点提示!非常感谢!

暂无标签

2 个回答

0

你想要填充的轮廓图...

这些示例应该能帮助你入门。如果你有具体的问题,随时告诉我们。

3

我建议你使用 pcolormesh 这个函数。

你只需要输入在一维数组 x 和 y 中定义的区间,以及相应的二维数据。下面是一个简单的例子。

from pylab import *
x = logspace(log10(1),log10(100),11)
y = linspace(1,100,21)

data = rand(20,10)
pcolormesh(x,y,data)
show()

注意,x 和 y 多了一个点。在这种情况下,data 会填充由 x 和 y 定义的区间。否则,你也可以使用 contourf 这个函数。

祝好!

撰写回答