使用Python创建二维轮廓图的最佳方法
我正在尝试用Python创建一个二维等高线图,长得像这样:
在这个例子中,这是一张显示多个点化学浓度的地图。为了简单起见,我们可以把它看作是海拔高度。
我手头有一张562x404像素的地图,并且有一些X和Y坐标,给出了这些点的具体数值。但我没有足够的数据点来平滑地连接这些线,有时候甚至只有很少的数据可用。我了解到,样条图可以用来平滑地连接这些点。
我发现Python有很多库可以帮助创建类似这样的等高线图。
- Matplotlib的Pyplot Contour看起来很有前景。
- Numpy似乎也有一些潜力。
但对我来说,我还没有找到一个明显的最佳选择。作为一个新手,我不太确定从哪里开始,特别是在处理这样的图形数据时。
所以我真正想问的是,哪个库是最好的选择?越简单越好。如果你能提供一些帮助我正确入门的建议,那就太好了。
谢谢你。
3 个回答
0
我之前也有同样的问题。我发现matplotlib这个工具有一种叫做插值的功能,可以用来平滑地连接离散的X-Y点。
以下是一些对我帮助很大的文档:
- Matplotlib的
matplotlib.tri.LinearTriInterpolator
文档。 - Matplotlib的 不规则间隔数据的轮廓图 示例。
- 我如何使用上述资源 从CSV文件中加载x, y, z点,制作一个完整的地形图。
0
Numpy其实是一个可以处理多维数组的工具,而不是一个画图的软件。你不需要每个像素都有数据。只要对你的数据数组进行遮罩处理就可以了。Matplotlib会自动绘制有数据的区域,而把没有数据的地方留空。
4
在你提到的这个numpy例子中,作者其实是使用了Matplotlib。虽然有很多绘图的库,但Matplotlib是最受欢迎的,特别适合像这样的简单2D图表。如果没有特别的理由,我会选择用它。
一个通用的策略是,先在Matplotlib的示例图库中找一些看起来像你想要的图,然后修改源代码。还有一个我喜欢的高质量Matplotlib示例来源是:http://astroml.github.com/book_figures/