python 画高程图像

python imshow 高程图

import matplotlib.pyplot as plt
import numpy as np

#数据处理
#按行全部打开test文件,test是一个高程asc文件
file_name ='test.asc'
with open(file_name) as t:
    content = t.readlines() 
    
#将空格去除,并将数据存入列表
data = []
for line in content:
    line = line.split()
    data.append(line)
    
#数据前6行是元数据,后面是高程数据
data_num = np.array(data[6:],dtype=np.float64)

#画图
plt.imshow(data_num)
plt.colorbar()
plt.show()

python 画高程图像_第1张图片

#通过设置vmin,vmax 显示特定的高程范围
plt.imshow(data_num,vmin=700,vmax=850)
plt.colorbar()
plt.show()

python 画高程图像_第2张图片
当图像有大量的填充值时,合理设置vmin,vmax能增强图像显示效果如下图
python 画高程图像_第3张图片

#去掉填充值
real_data = data_num[data_num != -9999]
plt.imshow(data_num,cmap='hsv',vmin=np.min(real_data),vmax=np.max(real_data))
plt.show()

python 画高程图像_第4张图片

#改变颜色映射
plt.imshow(data_num,cmap='hsv')
plt.colorbar()
plt.show()

python 画高程图像_第5张图片

fig = plt.figure(figsize=(16,16))  #画板,figsize 画板大小

fig1 = fig.add_subplot(3,2,1) #分画板为3*2矩阵,6个子图,画在第一个子图上
fig1.imshow(data_num)
fig2 = fig.add_subplot(3,2,2)
fig2.imshow(data_num,vmin=700,vmax=900)
fig3 = fig.add_subplot(3,1,2) #分画板为3*1矩阵,3个子图,画在第二个子图上,覆盖了上面子图
fig3.plot(np.sort(data_num.reshape(1,-1)[0]))
fig4 = fig.add_subplot(3,1,3)  #分画板为3*1矩阵,3个子图,画在第三个子图上,覆盖了上面子图
fig4.hist(np.sort(data_num.reshape(1,-1)[0]),8)# 8 为直方图的间隔数
fig4.set_title('排序直方图',fontproperties="SimHei",fontsize=20) #设置子图标题,设置字体为SimeHei(可显示中文),fontsize字体大小
fig4.set_xlabel('x -- test')  #设置子图x轴
fig4.set_ylabel('y -- test')  #设置子图y轴
plt.show()

python 画高程图像_第6张图片

点击查看更多cmap类型
数据地址:
链接:https://pan.baidu.com/s/1k1arl-2WO51Op6tS1KdmVg
提取码:mg4v

你可能感兴趣的:(python可视化,python,数据可视化,matplotlib)