Python pandas读取txt格式SEM等高线数据,并通过matplotlib绘制等高线云图

本文介绍了如何利用Python的numpy、pandas和matplotlib库,从.txt格式的DEM文件中读取数据并绘制等高线云图。首先,通过pandas读取txt文件内容到二维数组,然后使用matplotlib的meshgrid函数生成坐标矩阵,最后使用contourf函数绘制等高线图,并调整颜色和分辨率。示例代码中展示了详细的步骤和关键函数的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

  需求如下:通过.txt格式的DEM文件(即 数字高程模型(Digital Elevation Model))绘制等高线云图。
  通过python数据科学处理库numpy、pandas以及matplotlib三个库实现绘制等高线云图。


效果

  等高线云图如下图所示。
在这里插入图片描述
  绘图所需的输入内容,即.txt格式的DEM文件如下图所示。文本格式文件,每两个数据之间通过“一个tab键”间隔,每3600个(我的文件中是3600个)数据之间有一个“回车键”进行分隔。每个数据均通过科学计数法计数。
在这里插入图片描述


核心代码

编程思路

  通过pandas库直接读取文本文件中的数据到一个二维数组中去,再通过matplotlib绘图的contour函数一步绘制。

脚本文件

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

n = 3600
x = np.linspace(1, 3600, n)
y = np.linspace(1, 3600, n)
X, Y = np.meshgrid(x, y)   # 每个点的横坐标、纵坐标分别形成的2维矩阵, X与Y是两个形状相同的2维矩阵
Z = pd.read_csv("DEM-whgt.txt", sep='   ', header=None, dtype='float')

plt.figure(figsize=(16, 16), dpi=10) # dpi分辨率
# C = plt.contourf(X, Y, Z, line_mum, colors='black', linewidths=.5)
C = plt.contourf(X, Y, Z)
# plt.clabel(C, inline=True, fontsize=12)  # 图中画出等高线的数值
line_mum = 50
plt.contourf(X, Y, Z, line_mum, alpha=0.75, cmap='jet')
# plt.colorbar() # 绘制色棒

plt.axis('off')   # 去坐标轴
plt.xticks([])    # 去 x 轴刻度
plt.yticks([])    # 去 y 轴刻度
plt.savefig("./333.png", bbox_inches='tight', pad_inches=0)
# bbox_inches='tight', pad_inches=0 去白边
# "./{}_resized.jpg".format(image_name.split(".jpg")[0]) 保留原始图像的名字并在后面加上_resized
plt.show()

解释

n = 3600
x = np.linspace(1, 3600, n) # 在[1,3600]区间内等距生成n个数字,形成数组x
y = np.linspace(1, 3600, n)
X, Y = np.meshgrid(x, y)  # 这里的X,Y均为2维数组

每个点的横坐标、纵坐标分别形成的2维矩阵, X与Y是两个形状相同的2维矩阵

np.meshgrid(x,y)

这句话通过数组x,y生成一一对应的网格化数据,X,Y形状大小均为3600×3600,X为对应位置坐标点的横坐标,Y为对应位置坐标点的纵坐标

Z = pd.read_csv("DEM-whgt.txt", sep='   ', header=None, dtype='float')

通过pandas读取txt文档内容

plt.contourf(X, Y, Z, line_mum, alpha=0.75, cmap='jet')

通过contourf函数绘制等高线图,line_num为等高线的数量,cmap为色棒的类型。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wang_chao118

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值