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()
#通过设置vmin,vmax 显示特定的高程范围
plt.imshow(data_num,vmin=700,vmax=850)
plt.colorbar()
plt.show()
当图像有大量的填充值时,合理设置vmin,vmax能增强图像显示效果如下图
#去掉填充值
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()
#改变颜色映射
plt.imshow(data_num,cmap='hsv')
plt.colorbar()
plt.show()
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()
点击查看更多cmap类型
数据地址:
链接:https://pan.baidu.com/s/1k1arl-2WO51Op6tS1KdmVg
提取码:mg4v