linemap | 这样好看的山峦地图真的可以快速绘制啦~~

news2024/12/29 6:04:06

上一次介绍了Python绘制svg的优秀可视化库Pygal,今天我们介绍一下一个优秀的R地图可视化绘制包-linemap包,顾名思义,该包是是为了绘制由线组成的地图,其官网如下:https://github.com/rCarto/linemap。该包主要拥有两个绘图函数:linemap()和 getgrid(),其中:linemap()使用网格数据的数据框显示由线组成的地图。getgrid()将一组多边形(sf对象)转换为绘制linemap()的合适数据框(data.frame)。

更多详细的数据可视化教程,可阅读我们的课程店铺:

R-linemap 样例介绍

这里我们介绍下官网提供的例子,样例1的绘图代码如下:

library(sf)
library(linemap)
data("popOcc")
data("occitanie")
opar <- par(mar=c(0,0,0,0), bg = "ivory2")
plot(st_geometry(occitanie), col="ivory1", border = NA)
linemap(x = popOcc, var = "pop", k = 2.5, threshold = 50,
        col = "ivory1", border = "ivory4", lwd = 0.6, add = TRUE)

mtext(text = "Population\nen Occitanie", side = 3, line = -4, 
      col = "black", font = 4, adj = 0.05, cex = 2)
mtext(text = "Données carroyées à 1 kilomètre, INSEE 2010", side=1, 
      line = - 1, col = "black", font = 3, adj = 0.98, cex = 1)
par(opar) 

可视化结果如下:

linemap() charts

这里我们看一下具体用于绘制的数据类型,首先地图数据occitanie,其结果如下:

地图数据occitanie

可以看出其为sf地图文件类型。popOcc的数据类型则如下:

数据popOcc

很明显,其为 data.frame 数据类型,而当我们没有用于绘制图表的合适数据时,我们可以使用linemap的另一个函数getgrid()将其转换即可,介绍如下:

  1. 导入数据

library(linemap)
library(sf)
data("bretagne")
data("france")

opar <- par(mar=c(0,0,0,0), bg = "ivory2")
plot(st_geometry(bretagne))

快速绘制的可视化结果如下:

getgrid() data

接下来,我们使用 getgrid()从sf数据对象中获取需要的数据,这里获取“POPULATION”属性,bretagne地图数据 bret如下:

记过上述的转换后,绘制linemap的数据:地图数据(france)和线数据(bret),我们再使用linemap()绘制即可,代码如下:

opar <- par(mar = c(0,0,0,0))
plot(st_geometry(france), col="lightblue3", border = NA, bg = "lightblue2",
     xlim = c(min(bret$X), max(bret$X)), ylim= c(min(bret$Y), max(bret$Y)))
linemap(x = bret, var = "POPULATION", k = 5, threshold = 1,
        col = "lightblue3", border = "white", lwd = 0.8,
        add = TRUE)
#添加文字属性
mtext(text = "Charts Data from getgrid()", side = 3, line = -2.5, 
      col = "black", font = 4, adj = 0.05, cex = 1.8)
mtext(text = "Visualization by DataCharm", side=1, 
      line = - 1, col = "black", font = 3, adj = 0.98, cex = 1)
par(opar)

可视化结果如下:

linemap()函数属性介绍

我们使用help(linemap)就可以获取该函数的介绍及用法,如下:

help(linemap)

Arguments:(设置参数)
x :a data.frame, two first column must be longitudes and latitudes of gridded data.
(data.frame 数据类型,且前两列必须为经度和纬度)
var : name of the variable to plot.
     (要绘制的变量名称)

k : expension factor.
    (膨胀系数)
threshold : threshold of the data to plot.

col :color for the lines areas.
    (线区域的颜色)
border:color for the lines borders.
    (线边界的颜色)

lwd :thickness of the lines.
    (线的宽度)
add :if TRUE add the lines to the current plot.
    如果为TRUE,则将线添加到当前图层。

总结

本期我们介绍一个用于绘制线地图的R可视化包,需要注意的是,这里保存图片都是基础R的方法,没有使用我们熟悉额ggsave()保存,主要代码如下:

pdf("linemap_01.pdf")
# 保存高分辨率的png
png(filename = linemap_02.png,units="in",width = 8,height = 6,res = 600)
#这里注意下,units = "in",保存图片时即可达到和ggsave#()相同的效果。
opar <- par(mar=c(0,0,0,0), bg = "ivory2")
# 设置图片四周留白和背景颜色
# 开始绘图·····
par(opar) 
dev.off()

在使用特定包绘制不同图表时,大家也可以尝试下使用R基本函数保存图片哦~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490721.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙实战开发:【SIM卡管理】

概述 本示例展示了电话服务中SIM卡相关功能&#xff0c;包含SIM卡的服务提供商、ISO国家码、归属PLMN号信息&#xff0c;以及默认语音卡功能。 样例展示 基础信息 介绍 本示例使用sim相关接口&#xff0c;展示了电话服务中SIM卡相关功能&#xff0c;包含SIM卡的服务提供商、…

Android Studio Iguana | 2023.2.1版本

Android Gradle 插件和 Android Studio 兼容性 Android Studio 构建系统基于 Gradle&#xff0c;并且 Android Gradle 插件 (AGP) 添加了一些特定于构建 Android 应用程序的功能。下表列出了每个版本的 Android Studio 所需的 AGP 版本。 如果特定版本的 Android Studio 不支持…

pandas数据分析42——读取和写入stata和spss的数据格式

python就是胶水语言&#xff0c;啥文件基本都能读取&#xff0c;而且pandas作为数据分析最好用的包&#xff0c;其功能自然也很多&#xff0c;可以读取各种数据文件。 本次就来演示一下怎么读取stata文件&#xff0c;和spss文件&#xff0c;他们不仅储存了数据和变量&#xff…

如何解决iQOO手机运行uniapp真机调试时无法识别的问题

打开开发者选项&#xff0c;打开USB设置&#xff0c;把默认USB选项改成MIDI模式&#xff0c;就可以检测到手机了

Golang高级微调技术

本文分享了一些小技巧&#xff0c;可以帮助我们写出更简化、高效的Golang代码&#xff0c;从而获得更好的开发体验。原文: Fine-Tuning Golang: Advanced Techniques for Code Optimization 本文是Golang代码优化技术的综合指南&#xff0c;帮助我们释放 Golang 应用程序的全部…

微信小程序(五十)请求拦截器实现携token获取用户信息

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.个人信息框基本样式 2.请求拦截器携token获取个人信息进行渲染 源码&#xff1a; utils/http.js import http from "wechat-http"//设置全局默认请求地址 http.baseURL "https://live-api.it…

Mybatis_plus-基础

一、简介 1.概述 文档地址&#xff1a;https://baomidou.com/ 概述&#xff1a;MyBatis-Plus (opens new window)&#xff08;简称 MP&#xff09;是一个 MyBatis (opens new window) 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提…

前后端分离项目Docker部署指南(上)

目录 前言 一.搭建局域网 1.搭建net-ry局域网&#xff0c;用于部署若依项目 2.注意点 二.安装redis 创建目录 将容器进行挂载 ​编辑 测试是否安装成功 ​编辑 三. 安装MySQL 创建文件夹 上传配置文件并且修改 .启动MySQL容器服务 充许远程连接 四.部署后端 使用…

RISCV 中断控制器 PLIC APLIC (非MSI部分)

以下包含了 PLIC & APLIC 着重解释 APLIC 部分 参考 github 中 riscv-aia 规范1.0 &#xff0c;第四章 APLIC 注&#xff1a;关于MSI的部分简略&#xff08;等后续搞清楚&#xff09; 本人处于学习阶段&#xff0c;不清晰的地方&#xff0c;请见谅 一、关于 PLIC 配置 1、…

【Python】-----基础知识

注释 定义&#xff1a;让计算机跳过这个代码执行用三个单引号/双引号都表示注释信息&#xff0c;在Python中单引号与双引号没有区别&#xff0c;但必须是成对出现 输出与输入 程序是有开始&#xff0c;有结束的&#xff0c;程序运行规则&#xff1a;从上而下&#xff0c;由内…

(1)预处理

我们需要的文件结构如上 main.cpp add.h add.cpp add.h 这里使用riscv的工具链编译为.i文件&#xff0c;需要使用-E&#xff0c;就是只进行预处理&#xff0c;我们可以得到两个.i文件即main.i和add.i main.i 这里看到main.i里头文件全部替换&#xff0c;然后多了三万多行 所以…

力扣经典题目解析--合并两个有序链表

原题地址: . - 力扣&#xff08;LeetCode&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 迭代 链表节点结构…

Day12-【Java SE进阶】JDK8新特性:Lambda表达式、方法引用、常见算法、正则表达式、异常

一、JDK8新特性 1.Lambda表达式 Lambda表达式是JDK 8开始新增的一种语法形式;作用:用于简化名内部类的代码写法。 注意:Lambda表达式并不是说能简化全部匿名内部类的写法&#xff0c;只能简化函数式接口的匿名内部类。 有且仅有一个抽象方法的接口。注意:将来我们见到的大部…

【音视频开发好书推荐】《RTC程序设计:实时音视频权威指南》

1、WebRTC概述 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个由Google发起的实时音视频通讯C开源库&#xff0c;其提供了音视频采集、编码、网络传输&#xff0c;解码显示等一整套音视频解决方案&#xff0c;我们可以通过该开源库快速地构建出一个音视频通…

【前端寻宝之路】总结学习使用CSS的引入方式

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-BNJBIEvpN0GHNeJ1 {font-family:"trebuchet ms",verdana,arial,sans-serif;f…

C语言第三十五弹---文件操作(上)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】 文件操作 1、为什么使用文件&#xff1f; 2、什么是文件&#xff1f; 2.1、程序文件 2.2、数据文件 2.3、文件名 3、二进制文件和文本文件 4、文件的打开和…

集成算法(随机森林,AdaBoost,Xgboost,Stacking模型)

目录 一、前言 二、Bagging模型 三、Boosting模型 四、Stacking模型 五、总结 一、前言 集成算法&#xff08;Enseamable learning&#xff09; 集成算法一般考虑树模型&#xff0c;KNN就不太适合 目的&#xff1a;让机器学习效果更好&#xff0c;单个不好&#xff0c;一起…

性能优化篇(七) UI优化注意事项以及使用Sprite Atlas打包精灵图集

UI优化注意事项 1.尽量避免使用IMGUI(OnGUI)来做游戏时的UI&#xff0c;因为IMGUI的开销比较大。 2.如果一个UGUI的控件不需要进行射线检测&#xff0c;则可以取消勾选Raycast Target 3.尽量避免使用完全透明的图片和UI控件。因为即使完全透明&#xff0c;我们看不见它&#xf…

BUUCTF------[HCTF 2018]WarmUp

开局一个表情&#xff0c;源代码发现source.php <?phphighlight_file(__FILE__);class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];if (! isset($page) |…

关于图形学中生成三角形库Triangle.Net的下载及简单使用

背景 Triangle.NET 是生成 2D&#xff08;约束&#xff09;Delaunay 三角剖分和点集或平面直线图的高质量网格。此库是基于 Jonathan Richard Shewchuk 的 Triangle 项目&#xff0c;主要用于图形学像Opengl(或Unity3D)中生成三角形使用。 下载 Triangle.Net是基于C#语言的库…