python | 画中国站点数量空间分布图
0.写在前面
粗略确定了一个研究范围之后,还在分析站点数据...
本文包括在中国地图上画网格和绘制站点数量空间分布图(0.5°×0.5°格子)
1.txt文件读取并提取需要的列数据
df = pd.read_table(r"D:\20140101.txt",sep='\t',header=None)
#sep是分隔符,\t是空格,若为‘,’需要修改
#(print(df)可以查看读取的文件数据,dtype是数据格式)lat = df[64] #df[数]是引用列的格式,我需要的纬度在第66列
#print(lat),可以看一下有没有选错数据
del lat[0] #我的lat的第一个数据是lat,其他的是数,所以需要把第一个删掉;之后lat的索引从1开始
lat=lat.astype(float) #修改lat里的数据格式为float#lon与lat类似
lon = df[66]
#print(lon)
del lon[0]
lon=lon.astype(float)
2.把站点在地图上标出来,再画上网格
fig = plt.figure(1, figsize=[16, 9])
proj = ccrs.PlateCarree()
ax = plt.subplot(1, 1, 1, projection=proj)
extent = [70, 140, 30, 55]
ax.set(xlim=(70,140),ylim=(30,55))
#ax.set_extent([70, 136, 15, 60] , crs=ccrs.PlateCarree()),这句和上面那句等价,但是我因为用这句会报错就改成上一句了china = shpreader.Reader(r"D:\bou2_4l.dbf").geometries()
# 绘制中国国界省界九段线等等
ax.add_geometries(china, ccrs.PlateCarree(),facecolor='none', edgecolor='black', zorder=1)
ax.add_geometries(Reader(r"D:\1级河流.shp").geometries(), ccrs.PlateCarree(), facecolor='none', edgecolor='RoyalBlue', linewidth=0.4)
plt.title('20140101站点分布图', fontsize=20,pad=20) #pad是调整标题和图之间的距离的参数# 设置图例,shrink调整色标长度ax.set_xticks(np.arange(extent[0], extent[1]+1, 10), crs=proj)
ax.set_yticks(np.arange(extent[-2], extent[-1]+1, 5), crs=proj)
ax.xaxis.set_major_formatter(LongitudeFormatter(zero_direction_label=False))
ax.yaxis.set_major_formatter(LatitudeFormatter())miloc = plt.MultipleLocator(0.5) #0.5意思是以0.5°为间距画线
ax.xaxis.set_minor_locator(miloc)
ax.grid(axis='x', which='both') #both可替换为major或minor,画的线不同,可自行尝试miloc = plt.MultipleLocator(0.5)
ax.yaxis.set_minor_locator(miloc)
ax.grid(axis='y', which='both')
plt.scatter(lon, lat, c='k',s=2)
plt.savefig("D:\China2019.png", dpi=300,bbox_inches='tight')
plt.show()
作图结果:(标题没截出来)
3.(接着1)查每个格的站点数量并做图
numb=np.zeros([50,140],dtype=float,order='C')
# 创建一个全是0的二维数据,50是我区域纬度范围的2倍(因为0.5°一个格)#假定左下为0,0
for m in range(1,1740):if lat[m]<55 and lat[m]>=30 and lon[m]>=70 and lon[m]<140:a=lat[m]i=int(((a-30)//0.5))b=lon[m]j=int(((b-70)//0.5))numb[i][j]=numb[i][j]+1
#print(numb),可以查看现在的含数量信息的数组plt.matshow(numb,cmap='gist_heat_r') # 生成图像
ax=plt.gca()
ax.xaxis.set_ticks_position('bottom') #把x轴刻度规定在下方
ax.invert_yaxis() #因为它作图默认(0,0)在左上,要把纵坐标颠倒一下plt.title("2014站点数目分布图")#plt.xticks([])#plt.yticks([]) 需要不显示刻度的话可以加上这两句
plt.colorbar(shrink=0.8) #shrink控制colorbar长度plt.show()
作图结果:(我的是不显示刻度的结果,需要刻度的话可以把倒数三四行加上,不过我觉得这个刻度也不是经纬度,可能没什么用)
4.把两个图叠加在一起
如果有会的兄弟姐妹可以私聊我一下吗qwq
我只能用平板的画图软件把两个图叠一起www
python | 画中国站点数量空间分布图相关推荐
- Matlab和Python 画矩阵的非零元分布图
文章目录 前言 Matlab画矩阵的非零元分布图 程序 结果 Python画矩阵的非零元分布图 程序 结果 总结 前言 一般我们在进行数值计算时,经常会遇到求解如下等式的问题: Ax=bAx=b Ax ...
- 如何用python画出中国地图-用Python画中国地图(二)
在上一篇文章<用Python画一个中国地图>中,我们简单描述了一下如何用Python快速画出一个中国地图的轮廓,似乎没有什么实用价值,这一次我们用实际数据填充它,使它看上去更有意义. 上色 ...
- 用Python画中国地图(二)
在上一篇文章<用Python画一个中国地图>中,我们简单描述了一下如何用Python快速画出一个中国地图的轮廓,似乎没有什么实用价值,这一次我们用实际数据填充它,使它看上去更有意义. 上色 ...
- echarts 山东地图_用Python画中国地图,实现各省份数据可视化
第一步:安装pyecharts pyecharts是一款将python与echarts结合的强大的数据可视化工具,本文使用了0.1.9.4版本 pip install pyecharts==0.1.9 ...
- 用Python画中国地图,实现各省份数据可视化!可视化简直了!
第一步:安装pyecharts pyecharts是一款将python与echarts结合的强大的数据可视化工具,本文使用了0.1.9.4版本 pip install pyecharts==0.1.9 ...
- python 画ks曲线_Ks密度曲线分布图绘图
Ka(dN)代表每非同义位点的碱基替代数,而 Ks(dS)则代表每同义位点的碱基替代数, Ka/Ks的比值常用于判断某个蛋白编码基因是否受到选择压力的作用.一般认为,当 Ka/Ks>1时,则认为 ...
- Python 画中国地图 填色图 带南海九段线和指南针
1. 库导入 import cartopy import numpy as np import pandas as pd import proplot as pplt import geopandas ...
- python画中国人口变化情况以及数据拟合
数据来源中国人口统计年鉴 mport matplotlib.pyplot as plt import numpy as np import xlrd from scipy.optimize impor ...
- python | 绘制中国地形图(带中国边界省界)
写在前面 <全篇参考气象水文科研猫公众号7.30日发的推送> Python使用Cartopy绘制全球地形图 效果图 1 不含中国边界和省界的全球地形图 直接参考公众号的推送就没问题 2 含 ...
- python 可视化 画直线_用Python画江苏省地图,实现各地级市数据可视化
前言 万万没想到我昨天发布的用Python画中国地图,实现各省份数据可视化这篇文章获得了很多朋友的喜欢,目前已获得了66次转发,314次收藏,也让我涨了60个左右粉丝. 小嘚瑟 虽然这点成绩跟很多大V ...
最新文章
- 基于数据库数据增量同步_基于canal实现分布式数据同步
- krylov子空间迭代法
- python opencv cv2.VideoCapture(),read(),waitKey()的使用 ret,frame参数
- 脚本命令配置mysql_MySQL 自动化部署脚本
- java并发编程(十七)内存操作总结
- 全国大学校园网—拓扑图欣赏
- python_numpy_中的matrix与array的区别
- python怎么求中位数_Python求两个有序数组的中位数的几种方法
- Android开发项目计划书
- matlab划分训练集验证和测试集代码_数据集划分为训练集和测试集并生成标签--matlab代码...
- 傅里叶分析之掐死教程(完整版)
- 迅雷下载遇到“应版权方要求无法下载”,怎么办
- 解放生产力,CSS3帧动画工具
- 微信朋友如何找回 android,微信怎么恢复好友?简单几步轻松恢复!
- 精美黑色UI版创客新零售系统源码
- 搜狗 2018校招 商业基础工程—测试开发练习题
- 菜鸟系列之一:在ubuntu linux下搭建android开发
- Spss-kmeans聚类实操
- Linux 软中断机制分析
- 【Dart 教程系列第 28 篇】Dart中的 Map 和实体类的相互转换