前言 嗨,你好,我是来自点点GIS的南南 我与Cartopy的认识起源于“气象水文科研猫”的这个推文,那时候的我觉得,用代码画地图好酷,arcgis就感觉low爆了。但是一直没有时间学习。...前段时间放暑假,磕磕绊绊装完包以后就不想动弹了,折腾环境折腾的我头皮发麻。gdal和cartopy真的是我学python以来装的最麻烦的包。...gridlines:给地图添加网格线。 coastlines:在地图上绘制海岸线。 stock_img:给地图添加低分辨率的地形图背景。...add_feature:给地图添加特征(例如陆地或海洋的填充、河流等)。...)#线条宽度0.3 在地图上添加特征 上面的地图是一个十分粗糙的地图,仅有海岸线,尝试一下添加更多地理信息 添加预定义要素 首先需要导入一个cartopy.feature 常量,为了简化一些非常常见的情况
Cartopy最初是在英国气象局开发的,目的是让科学家能够快速、方便、最重要的是准确地在地图上可视化他们的数据。...cartopy的主要特点是面向对象的投影定义,以及在投影之间转换点、线、向量、多边形和图像的能力。...,他喵的 备注:常用的Cartopy依赖库作用 pyproj:处理地图投影变形,Cartopy 基于它定义了丰富的地图投影; pillow:Python 的图像处理包,读写和操作栅格图像; pyshp:...,一个个安装就行,最后安装Cartopy 由于Cartopy一般与matplotlib一起使用,所以我们可以顺便安装一下matplotlib库 pip install matplotlib 验证安装...新建一个python文件,我这里使用的是jupyter.键入如下代码 # 导入所需的库 import matplotlib as mpl import matplotlib.pyplot as plt
大数据告诉你,台风最喜欢在我国哪个省市登陆 这次的文章不研究台风数据,而是尝试用Python来绘制台风路径。...主要第三方库 用到的主要工具包有pandas、numpy、matplotlib、cartopy、shapely,前三个库大家可能都熟悉,下面介绍下后两个库的使用场景。...❝cartopy:基于matplotlib的python地理数据处理和可视化库,本文会用来展示地图 shapely: 是一个对几何对象进行操作和分析的Python库,本文用来处理点线数据 ❞ cartopy...方式有很多种,既可以用离线的GeoJson数据,也可以用JPG图片,或者第三方库提供的地图。 我这里用的是cartopy内置的地图数据,可以很方便的修改配置属性。...首先导入本次会用到的所有库: # cartopy:用来获取地图 import cartopy.crs as ccrs import cartopy.feature as cfeature # matplotlib
导入库并可视化 import xarray as xr import matplotlib.pyplot as plt import cartopy.crs as ccrs import numpy as...直接使用会使图像对比度不高,颜色看起来比较浅淡。通过gamma校正等方法将这种线性关系转换为非线性,使较暗的区域变亮,较亮的区域保持不变。...这样可以增加整个图像的对比度,使颜色更加饱和丰富 为什么修改单位km为m 图投影坐标系一般使用的是米为单位。直接拿千米单位的影像坐标去绘制地图,会造成非常严重的坐标错位。...因此需要提前将影像的坐标单位换算为与地图投影匹配的米单位,然后再传入投影变换,进行坐标转换到地图上。...是地图绘制过程中的一种非常有效和高效的方法 2.绘制era5小时降水 import matplotlib.pyplot as plt import cartopy.crs as ccrs import
双节活动获奖的书籍会在下周一(10月12日寄出),获奖的同学请耐心等待哦!奖品收到后记得拍照发我下哦!...但是,有时候这并不能满足我们的需求,比如我作为某地级市的预报员,绘制该市降水图时,为使图片整洁,一般不希望多出其他市县。...还有进行地区级别的研究,比如青藏高原地理区划将包含尼泊尔与不丹,cartopy的基础地理信息添加暂时无法做到,但是该库包已经准备了额外的接口以满足这种需求,并且比NCL更加灵活。...为什么需要加一个r在前面呢?这是因为电脑比较笨,不给绝对地址,他可能找不到。...ax.set_extent(extent, crs=proj) 通过plt.show()语句展示绘制出来的图像: ?
当然,和我们在前面matplotlib中了解到的一样,所有线条模式都可以改变他的粗细: ax.add_feature(cfeature.LAND)####添加陆地###### ax.add_feature...同样的,所有线状、面状物都是可以赋予颜色的: ax.add_feature(cfeature.LAND,color='y')####添加陆地###### ax.add_feature(cfeature.COASTLINE...import numpy as np import matplotlib.pyplot as plt import matplotlib.ticker as mticker import cartopy.crs...有些教程打包了资源解压到指定文件夹加快绘图速度,我不建议这么做。...一是更改目录是一种危险的行为(作为气象本专业的学生,我十分清楚大部分大气科学从业者的计算机水平是不专业的,这是大学专业学得杂,结果样样都会点,样样不精),二是即便是第一次绘制10m精度的图,也只需要大概五分钟即可全部完成
,帮助读者快速解读出信息,这实现起来也不难,我将会使用matplotlib的相关API配合循环语句来实现logo图片的嵌入。...摸清楚要做的内容之后,下面让我们开始吧! 2.2 半球部分的制作 正射投影部分,我选择使用cartopy.ccrs内置的Orthographic(),通过传入中央经纬度,即可得到期望的半球面: ?..., axes_kwargs=dict(map_projection=crs_left)) # 添加陆地面并设置颜色 map_left.add_feature...图4 这样我们就完成了两个半球部分的制作,顺便配合matplotlib中的text()、参数fontproperties以及matplotlib.font_manager来基于思源宋体添加标题: ?...(),配合matplotlib自带的add_artist(),向现有的图床中插入外部图片(这里的logo图片是我通过软件手绘的~)。
,帮助读者快速解读出信息,这实现起来也不难,我将会使用matplotlib的相关API配合循环语句来实现logo图片的嵌入。...2.2 半球部分的制作 「正射投影」部分,我选择使用cartopy.ccrs内置的Orthographic(),通过传入中央经纬度,即可得到期望的半球面: 图3 我们利用mpl_toolkits.axes_grid1....inset_locator中的inset_axes()将两个半球各自对应的axe对象插入到主体axe中,再利用cartopy的add_geometries进行矢量元素的叠加和色彩映射即可,我已经在数据中算好了归一化数值方便色彩映射..., axes_kwargs=dict(map_projection=crs_left)) # 添加陆地面并设置颜色 map_left.add_feature...,顺便配合matplotlib中的text()、参数fontproperties以及matplotlib.font_manager来基于思源宋体添加标题: 图5 2.3 象形柱状图部分的制作 介绍完「
,帮助读者快速解读出信息,这实现起来也不难,我将会使用matplotlib的相关API配合循环语句来实现logo图片的嵌入。...2.2 半球部分的制作 「正射投影」部分,我选择使用cartopy.ccrs内置的Orthographic(),通过传入中央经纬度,即可得到期望的半球面: ?..., axes_kwargs=dict(map_projection=crs_left)) # 添加陆地面并设置颜色 map_left.add_feature...图4 这样我们就完成了两个半球部分的制作,顺便配合matplotlib中的text()、参数fontproperties以及matplotlib.font_manager来基于思源宋体添加标题: ?...(),配合matplotlib自带的add_artist(),向现有的图床中插入外部图片(这里的logo图片是我通过软件手绘的~)。
为什么要插这一句嘴,实际上有助于我们在接下来绘制剖面图时理解切片操作。...as plt import matplotlib as mpl import cartopy.crs as ccrs import cartopy.feature as cfeature from cartopy.io.shapereader...这样第一个就是二维的,可以直接绘制等值线填色图,第四个就是三维的,不能直接绘制等值线填色图,而只能在提取了某一层之后,变为二维的,才能绘制等值线填色图,如: import xarray as xr ds...:]*0.01#读取气压层数,一维的 fig=plt.figure(figsize=(5,3),dpi=700)#添加画布 ax=fig.add_axes([0,0,1,1])#添加子图 ax.invert_yaxis...我还没有画过,但是猜测应当是这个数据为四维数据,将经度、纬度做降维处理,从图上可以看出,这张图代表(30.28°E,108.93°N)这一个点的整层数据随时间的变化。
将上面这幅图与本文第一张图比较,如果使用fig.colorbar直接生成色条,那么图像上将会有两个子图,生成的colorbar不算子图。...而只要更改添加子图的位置参数,就可以在图上随意移动。这在多子图上添加规范色条时非常方便。 ? 关于指数标签,一般来说,在contourf中使用了指数标签命令后,色条会自动变成指数模式。...####################################### filename=r'C:\Users\lenovo\Desktop\累年降水数据.xlsx'#数据文件地址,这个数据是我捏造的...我在文章里插入了读者讨论,貌似可以充当互动,有问题可以直接留言,也可以后台留言。...900,1900,100) ax3.plot(ax3x,ax3y) ax3.set(title='累计降水分布面积',xlim=(0,1500),xlabel='分布面积(平方千米)') 以上数据和各种标准都是我虚构的
本节提要:关于如何利用matplotlib+cartopy绘制酷炫的三维地图。 ---- ---- 这是我在比较久远之前看到的问题。...首先必须明确一点,matplotlib的axes3D这个投影中 ,是不能用add_geometry这个功能来直接将读取到的shp文件添加上去的。...所以我在s站上查到了cartopy库包的开发人员直接给出的回答。我们不直接开讲怎么绘制,而先回忆在不久之前的推文中,我们使用过的一个功能。...这就是我理解的开发者的想法。下面就是如何将shp文件中的geometry转化成polygon的问题了。cartopy有没有这个功能呢,打开官网文档,可以查到这么一条: ?...而在matplotlib中,path是可以转化成patch的,而polygon就是patch的一种。但是显然,上述只是一个简单的解释为什么这几样之间可以相互转化。
前言 交流群里有读友提问:如何在地球投影中添加指定的纬圈。我抽空尝试了一下,分享给大家。...当无地图投影时 在 python 的 matplotlib.pyplot 和 matplotlib.patches中,有很多内置的函数可以帮助我们绘制矩形、圆形、椭圆等图案。...1、非极地投影 以lat-lon投影为例,令纬度0°、经度0°为圆心,15°为半径,绘制圆形: code import matplotlib.pyplot as plt from cartopy import...='110m', linewidth=0.5) # 添加圆圈到地图上 circle = Circle((0, 0), radius=15, transform=ccrs.PlateCarree(),...(黄色标注),gridlines有很多可选参数,大家可以官网了解一下: code import matplotlib.pyplot as plt from cartopy import crs as ccrs
---- ---- 在前面推送中我们提到了通过collection功能而在3D地图中添加地图的方法,也短暂提到了栅格与填色两种图形样式的降维方法。...但是从matplotlib这两个函数的底层有一定的局限性,比如下面这两张图的侧面填色就无法绘出: ? ? 前一张图只能画最上面的等值线填色和地图,下面这张的栅格也是无法绘制出来的,只能画地图。...一、Axes子图平面pcolormesh的迁移 import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.io.shapereader...ap=ax[0].pcolormesh(lon,lat,data,cmap='Spectral_r') 这一句,在第一张子图上绘制了一个pcolormesh,并将它返回的图形几何省称为ap。...但是这个办法有个问题,如果有封闭的polygon则会添加不出来,还没有找到适合的方法来解决这个问题,如果有大神希望能指导一二: ? 六、仿制一张图 ?
也不知他解决没有,我又去翻找了下,大概帖子已经沉底,只能在这里写一下了。 colorbar函数好像并没有给出能够改变其样式的参数,所以,想要直接简单的通过修改参数来让他变为弯曲的样式就非常困难了。...(也不排除我眼瞎官网手册没看到 ? )所以我们只能取巧了,假造一个colorbar(以下省称cbar)。这一节推送里的很多cbar其实都是伪cbar,怎么理解呢?...然后通过最后left、right两个polygon来添加分离的两头小三角。...这里只讲讲为什么能截取和拼接。...但是有个问题是我现在安装的matplotlib中的源码中,该FuncNorm类下面只有注释,没有内容。打开本地的matplotlib文件下的colors.py,我从头读到尾,确实没有这个功能的定义。
是关于能不能在已经截取出来的省份中添加对应的dem地形呢,并且根据需要添加上需要的城市所在的地理位置,比如在已绘制的图中标注出三亚的所在地 数据:地形tif文件 难点:文件格点过多,可视化会爆内存 解决办法...cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter from matplotlib import colors import...import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.feature as cfeature import...总之,Dask 提供了一种便捷的方式来处理大型数据集,并且能够有效地进行并行计算,从而加速数据处理过程。...由于学艺不精,尚不知道怎么对imshow对象进行白化,要是contourf就简单许多 点击链接可查看完整代码与在线运行
---- ---- 在前面推送中我们提到了通过collection功能而在3D地图中添加地图的方法,也短暂提到了栅格与填色两种图形样式的降维方法。...但是从matplotlib这两个函数的底层有一定的局限性,比如下面这两张图的侧面填色就无法绘出: 前一张图只能画最上面的等值线填色和地图,下面这张的栅格也是无法绘制出来的,只能画地图。...一、Axes子图平面pcolormesh的迁移 import matplotlib.pyplot as plt import cartopy.crs as ccrs import cartopy.io.shapereader...ax.set_xlabel('经度 (E)') ax.set_ylabel('纬度 (N)') ax.set_zlabel('层次') ax.view_init(elev=35,azim=290)#改变绘制图像的视角...ax.set_xlabel('经度 (E)') ax.set_ylabel('纬度 (N)') ax.set_zlabel('层次') ax.view_init(elev=35,azim=290)#改变绘制图像的视角
由于这个名字与《Chiikawa》漫画中的可爱角色“乌萨奇”(Usagi)同名,网友们亲切地称其为“乌萨奇台风”。这不仅增加了台风话题的趣味性,也让许多人对这次台风产生了更多的关注。...让我们一起动手吧 项目目标 我们的目标是: 收集台风“天兔”的历史路径数据。 使用 Python 的 Matplotlib 和 cartopy 工具包绘制台风路径图。...Matplotlib 库与cartopy进行可视化 import matplotlib.pyplot as plt import numpy as np from PIL import Image import...plt.tight_layout() # 显示图形 plt.show() 小结 通过本文的介绍,我们不仅学会了如何使用 Python 的 Matplotlib 和cartopy库来绘制地图和台风路径...,还学会了如何将外部图像(如《Chiikawa》漫画中的乌萨奇头像)添加到地图中,让地图更加生动有趣。
图1即是典型的图例式地图,主要介绍研究区域的情况,没有涉及到太多具体的研究数据和结论。图2则是一张综合式的图例式地图,主图为地貌图,附图是介绍地质结构和海拔的图像。...引入这种理论的原因是matplotlib自带的legend命令绘制图例的时候不是非常方便,那么我们需要使用其他的技法来实现图例的绘制。...matplotlib.path as mpath import cartopy.crs as ccrs import cartopy.mpl.ticker as cmt import cartopy.mpl.gridliner...as cmg import cartopy.mpl.patch as cmp import matplotlib.transforms as mt from matplotlib.font_manager...,为了能在图像上展示,我们对数据进行收缩(因为ax_legend设置了xlim和ylim): x=np.array(rgdf4.query('NAME=="清江"').iloc[-1]['geometry
今天来讲一讲在日常工作生活中我常用的几种绘制地图的方法,下面我将介绍下面这些可视化库的地图绘制方法,当然绘制漂亮的可视化地图还有很多优秀的类库,没有办法一一列举 pyecharts、plotly、folium...,不过渲染速度有些感人,这个就看个人的需求了,如果你对渲染速度有要求,那么 Ployly 可能不是最好的选择~ Cartopy/Basemap 之所以把这两个库放到一起,是因为他们都是基于 Matplotlib...之上的,而随着 Python2 的不再维护,Basemap 也被 Matplotlib 放弃,Cartopy 随之转正,下面我们主要介绍 Cartopy 工具 Cartopy 利用了强大的 PROJ.4...、NumPy 和 Shapely 库,并在 Matplotlib 之上构建了一个编程接口,用于创建发布高质量的地图 先来绘制一个世界地图 %matplotlib inline import cartopy.crs...) plt.show() 这是一个 cartopy 绘制的非常经典且常见的世界地图,形式比较简单,下面我们增强该地图 import datetime import matplotlib.pyplot
领取专属 10元无门槛券
手把手带您无忧上云