R语言实践——ggplot2+ggrepel绘制散点+优化注释文本位置

news/2025/2/19 9:17:43/

简介

书接adjustText实践——调整matplotlib散点图标签,避免重复

上文中,matplotlib+adjustText对于我的实例来说并没有起到很好的效果。所以,博主决定在R中利用gglot2+ggrepel绘制,期待效果。

操作过程

博主不常使用R,在此过程中详细记录每一步骤,以作备忘。

1. R读取数据(openxlsx)

library(openxlsx)fossils = read.xlsx("D://Work_Space/mahonia/1-化石记录/2023-3-17-Mahonia_fossils_leaf.xlsx")

2. 绘制散点图(ggplot2)

2.1 快速绘制散点图(plot)

library(ggplot2)plot(fossils$Lon, fossils$Lat)

在这里插入图片描述

2.2 geom_point()

library(gcookbook)
library(dplyr)ggplot(data = fossils %>% select(Lon, Lat), aes(x=Lon, y=Lat)) + geom_point()

在这里插入图片描述

2.3 分组展示(分型和年龄)

library(openxlsx)fossils <- read.xlsx("D://Work_Space/mahonia/1-化石记录/2023-3-17-Mahonia_fossils_leaf.xlsx")simple_fossils <- fossils %>% select(Genus, Name, Epoch, Lon, Lat, Group)
library(ggplot2)# plot(fossils$Lon, fossils$Lat)library(gcookbook)
library(dplyr)ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point()

在这里插入图片描述

2.4 添加文本注释(geom_text())

ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_text(aes(label = Name), size = 2)

在这里插入图片描述

3. 优化文本注释位置(ggrepel)

library(ggrepel)ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_text_repel(aes(label = Name), size = 3)

在这里插入图片描述
可以看到有许多标签没有显示出来。

尝试减小字体

ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_label_repel(aes(label = Name), size = 1)

在这里插入图片描述
根据警示信息,增加max.overlaps

ggplot(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_point() + geom_label_repel(aes(label = Name), size = 2, max.overlaps = 30)

在这里插入图片描述

效果也不行,还是挤在一起。

4. 绘制世界地图

4.1 地图

world <- map_data("world")world_map <- ggplot() + geom_map(data = world, map=world, aes(x=long, y=lat, map_id=region),color = "black", fill = "lightgray", size = 0.1)+scale_x_continuous(breaks = seq(-180, 210, 45), labels = function(x){paste0(x, "°")}) +scale_y_continuous(breaks = seq(-60, 100, 30), labels = function(x){paste0(x, "°")})world_map

在这里插入图片描述

4.2 散点地图

world_map + geom_point(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch))

在这里插入图片描述

4.2 合理调整文本

world_map + geom_point(data = simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, shape=Group, color=Epoch)) + geom_label_repel(data=simple_fossils %>% select(Lon, Lat, Group, Epoch, Name), aes(x=Lon, y=Lat, label=Name, color=Epoch,fontface="italic"), size=2, max.overlaps = 100, box.padding = 0.4, label.padding = 0.1)

在这里插入图片描述

后记

经过一番努力,达到的效果比python绘图要好一些。但是在保存图片时却不如python。后面再努努力吧。


http://www.ppmy.cn/news/41428.html

相关文章

三分钟了解什么是时序数据库

在介绍时序数据库之前&#xff0c;我们先来看看什么是时序数据。时序数据就是基于时间排序的数据&#xff0c;再通过时间坐标将这些数据连接起来&#xff0c;形成一个折线图&#xff0c;直观地展示一个指标在过去一段时间内的走势和规律&#xff0c;帮助定位数据异常点。 时序…

Vue自定义指令

一、认识自定义指令 目录 一、认识自定义指令 方式一、使用默认实现方式&#xff0c;使用 ref 实现&#xff0c;并抽取到 hooks&#xff0c;方便调用。 方式二、自定义一个 v-focus 的局部指令 方式三&#xff1a;自定义一个 v-focus 的全局指令 某些情况&#xff0c;你需要…

基于Spring Boot和Vue3的博客平台:用户管理、文章审核与管理、专栏审核与管理、数据统计与分析模块

目录 一、用户管理 1.查询用户列表 2.修改用户信息 二、文章审核与管理 1.查询待审核文章列表 2.审核文章 三、专栏审核与管理 1.查询待审核专栏列表 2.审核专栏 四、数据统计与分析 1.用户注册统计 2.文章发布统计 五、评论管理与审核 1.查询评论列表 3.删除评…

【随笔记】Win11、RTX3070、CUDA117的深度学习机器学习环境配置

文章目录一、创建深度学习 Conda 虚拟环境二、安装 Pytorch-Gpu三、安装 PyTorch Geometric四、安装 Sklearn五、Jupyter 配置5.1 将虚拟环境加入内核5.2 插件配置5.3 主题、字体、字号配置假设你已经安装了Anaconda3&#xff08;最新Anaconda3的安装配置及使用教程&#xff08…

Bayesian Rstan学习资料推荐

RStan 官方文档&#xff1a;RStan 官方文档是学习 RStan 的起点。它提供了详细的安装说明、基本用法和示例。 RStan 文档: https://mc-stan.org/rstan/ RStan User’s Guide: https://mc-stan.org/docs/2_27/rstan-guide/index.html Stan 用户指南&#xff1a;Stan 用户指南详…

代码随想录Day50

昨天因为准备面试所以咕咕了一天。今天继续学习动规算法&#xff0c;尽管背包问题已经结束但其中的各类思想仍需要进一步理解。 198.打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房…

异步编程

异步编程 一、FutureTask应用&源码分析 1.1 FutureTask介绍 FutureTask是一个可以取消异步任务的类。FutureTask对Future做的一个基本实现。可以调用方法区开始和取消一个任务。 一般是配合Callable去使用。 异步任务启动之后,可以获取一个绑定当前异步任务的FutureT…

【kubernetes云原生】k8s资源管理命令与Namespace使用详解

目录 一、前言 二、k8s概述 三、k8s常用操作管理命令 3.1 kubectl 命令用法 3.2 常用控制台管理命令演示 3.2.1 获取全部节点信息 3.2.2 获取当前集群下全部pod 3.2.3 查看某个pod信息 3.2.4 获取当前集群下的所有namespace信息 3.2.5 查看当前集群下已创建的资源 3…