Earthpy | 这样阴影艺术地图绘制真的很简单...

文摘   2024-11-20 11:48   江苏  
  • 前言

    • 一、「earthpy」-Python处理栅格、矢量数据利器
    • 二、可视化学习圈子是干什么的?
    • 三、系统学习可视化
    • 四、猜你喜欢

前言

我们的数据可视化课程已经上线啦!!目前课程的主要方向是 科研、统计、地理相关的学术性图形绘制方法,后续也会增加商务插图、机器学等、数据分析等方面的课程。课程免费新增,这点绝对良心!

我们第一个数据可视化交流圈子也已经上线了,主要以我的第一本书籍《科研论文配图绘制指南-基于Python》为基础进行拓展,提供「课堂式」教学视频,还有更多拓展内容,可视化技巧远超书籍本身,书籍修正和新增都会分享到圈子里面~~

参与课程或者圈子的你将获取到:学员答疑、可视化资源分享、可视化技巧补充、可视化业务代做(学员和甲方对接)、副业交流、提升认知等等。

「earthpy」-Python处理栅格、矢量数据利器

最近在整理Python数据可视化课程的拓展内容时,发现了一个处理空间数据的超赞工具-「earthpy」,也解决了一个绘制艺术地图的问题,下面就给大家详细介绍一下这个工具~~

  • earthpy简介及安装

EarthPy是一个 python 软件包,它使使用开源工具绘制和处理空间栅格矢量数据变得更加容易。Earthpy 依赖于侧重于矢量数据的 geopandas 和便于输入和输出光栅数据文件的rasterio,你还可以使用 matplotlib 进行绘图操作。

可以使用pip进行安装,但之前需要安装rasterio, geopandas, numpy等包:

pip install earthpy
  • earthpy包可视化功能

我们重点还是放在EarthPy工具的可视化展示上面,如下:

  1. 使用 EarthPy 绘制栅格数据图层
from glob import glob
import matplotlib.pyplot as plt
import earthpy as et
import earthpy.spatial as es
import earthpy.plot as ep

# Get data for example
data = et.data.get_data("vignette-landsat")

# Set working directory
os.chdir(os.path.join(et.io.HOME, "earth-analytics"))

# Stack the Landsat 8 bands
# This creates a numpy array with each "layer" representing a single band
# You can use the nodata= parameter to mask nodata values
landsat_path = glob(
    os.path.join(
        "data",
        "vignette-landsat",
        "LC08_L1TP_034032_20160621_20170221_01_T1_sr_band*_crop.tif",
    )
)
landsat_path.sort()
array_stack, meta_data = es.stack(landsat_path, nodata=-9999)

titles = ["Ultra Blue""Blue""Green""Red""NIR""SWIR 1""SWIR 2"]
# sphinx_gallery_thumbnail_number = 1
ep.plot_bands(array_stack, title=titles)
plt.show()
Plot All Bands in a Stack
  1. 使用 EarthPy 创建阴影层

这个功能就能帮助我们绘制出根据艺术感的地图作品。

绘制普通的DEM数据结果如下:

创建阴影图层:

# Create and plot the hillshade with earthpy
hillshade = es.hillshade(elevation)

ep.plot_bands(
    hillshade,
    cbar=False,
    title="Hillshade made from DTM",
    figsize=(10, 6),
)
plt.show()

将dem图层放在阴影图层之上:

# Plot the DEM and hillshade at the same time
# sphinx_gallery_thumbnail_number = 5
fig, ax = plt.subplots(figsize=(10, 6))
ep.plot_bands(
    elevation,
    ax=ax,
    cmap="terrain",
    title="Lidar Digital Elevation Model (DEM)\n overlayed on top of a hillshade",
)
ax.imshow(hillshade, cmap="Greys", alpha=0.5)
plt.show()

通过修改映射色系和图片后处理,我们可以绘制出下面的艺术地图效果:

更多关于EarthPy的使用语法和可视化案例,读者可参考:EarthPy官网[1]

我的书籍《科研论文配图绘制指南基于Python》作者专属优惠链接如下:

我的新书《科研论文配图绘制指南基于R语言》作者签名版链接如下:

可视化学习圈子是干什么的?

可视化学习圈子是书籍「科研论文配图绘制指南-基于Python」一书的学下圈子:主要通过以下几个方面,给大家带来比纸质书籍更丰富的学习内容:

  • 视频教学,和读者零距离互动交流
  • 及时修正勘误和定期新增绘制知识点
  • 拓展衍生,绘图知识点远超书籍本身
  • 直播视频+拓展资料+答疑,学习更高效

「PS」:我们直播教学内容为课堂式教学,原作者带着大家对书籍一章、一节、一页的进行教学。而且直播的视频都会通过剪辑后整理成课程,圈子中的同学可以免费、反复观看。当然,新增内容和定期答疑,直播也是如此。

  • 为何会有这个书籍学习社群?无门槛的微信群难免会鱼龙混杂,问题和质量都无法得到保证,而且一些关键问题经常被淹没,且没有沉淀价值。

  • 随着添加我微信的人日益增多,向我提问的人也越来越多,随便回答一下就太不负责任了;不回答也不是很好;如果都仔细回答,我也有自己的工作并且确实很忙,真的有点心有余而力不足!所以我才会建立这么一个渠道来沉淀我的可视化技巧和分享经验,以及给大家提供一个坚持学习的平台。

微信扫码下方二维码即可参与我们的书籍学习圈子啦:

微信扫码即可加入学习圈子

系统学习可视化

当然,在学习数据可视化的道路上,你也有很多问题得不到解答,也可以加入我们的可视化课程(可视化系列课程推文)后,在学员群里和大家一起谈论,一起进步,或者直接向我提问。如果我觉得你的问题很具有普适性,我会把它写成文章发布在公众号上,让更多人看到,有关我们数据可视化系列课程的服务内容,可以参考下面的 阅读原文

猜你喜欢

不是?!这种图一行代码就搞定了,超简单....
这图这么多人问!?赶紧给大家复现出来~~..
ggpubr!一键绘制出版级论文配图,绘图小白福音......
tidyterra!空间数据处理、可视化神器...
Antarctic-Plots!不用ArcGIS,我照样可以画出惊艳的地图...
比Matplotlib合并子图更方便!patchworklib让我告别PS拼图...
Xarray,不用ArcGIS,所有地理空间绘图全搞定...
Nature都推荐的箱线图(Boxplot)绘制工具长啥样?免费、在线、灵活操作...?
完美解决Matplotlib绘图中、英文字体混显问题..
MATLAB绘图不好看?!不是,你是还没发现这几个工具包吧..
不是,这个地理数据工具这么强的吗?数据处理、可视化它都行..
这种环形图太难画?!带你一行代码搞定..
不是,这封面图这么多人问的吗?教程来了
不用Seaborn,这个工具也能绘制超炫的统计图形···
NetworkX,网络结构图最强绘制工具·····

参考资料

[1]

EarthPy官网: https://earthpy.readthedocs.io/en/latest/index.html。

DataCharm
定期更新与科研学术有关的内容,比如论文插图绘制技巧、实用Python/R拓展包解读、作图软件(Veusz、Qrigin等)教程以及最前沿科研方法等。
 最新文章