作者简介Introduction

taoyan:伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

往期回顾

R语言学习笔记之聚类分析

R语言可视化学习笔记之ggpubr包

R语言可视化学习笔记之添加p-value和显著性标记

R语言可视化学习笔记之相关矩阵可视化包ggcorrplot




library(ggplot2)

#使用数据集mtcars演示

ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+geom_text(aes(wt, mpg, label=rownames(mtcars)))+theme_classic(base_size = 16)

可以看到可视化效果不是很好。接下来看看包ggrepel的效果。
geom_text_repel()是基于geom_text()

library(ggrepel)

set.seed(42)

ggplot(mtcars)+ geom_point(aes(wt, mpg), color="red")+

geom_text_repel(aes(wt, mpg, label=rownames(mtcars)))+

theme_classic(base_size = 16)

geom_label_repel()

geom_label_repel()是基于geom_label(),它将标签置于一个小方框中

set.seed(42)

ggplot(mtcars)+ geom_point(aes(wt, mpg), color="grey", size=5)+

geom_label_repel(aes(wt, mpg, fill=factor(cyl),

label=rownames(mtcars)), fontface="bold", color="white",

box.padding=unit(0.35, "lines"), point.padding=unit(0.5, "lines"),

segment.colour = "grey50")+ theme_classic(base_size = 16)

参数

大部分geom_text()的参数都适用于geom_text_repel(),除了以下几个:

  • hjust

  • vjust

  • position

  • check_overlap

ggrepel包为geom_text_repel()与geom_label_repel()提供了特有的参数设置:

  • segment.color:连接点与标签的线段的颜色

  • segment.size:线段的粗细

  • segment.alpha:线段的透明度

  • box.padding:文本框周边填充

  • point.padding:点周围填充

  • arrow:grid:arrow提供的箭头

  • force:强制性将重叠文本散开

  • max.oter:最大迭代次数

  • nudge_x/y:标签开始位置在坐标轴的移动距离

  • direction:允许标签的方向,x、y or both

下面举个栗子来详细了解这些参数的图形效果

set.seed(42)

ggplot(mtcars)+ geom_point(aes(wt, mpg, color=factor(cyl)), size=3)+

geom_text_repel(aes(wt, mpg, color=factor(cyl),

label=rownames(mtcars), angle=ifelse(mtcars$cyl==4, 90, 0)),

size=4, family="Times", fontface="bold",

box.padding=unit(0.5, "lines"), point.padding=unit(1.6, "lines"),

segment.color = "#cccccc", segment.size = 0.5,

arrow = arrow(length=unit(0.01, "npc")),force = 1, max.iter = 3e3,

nudge_x = ifelse(mtcars$cyl==6, 2, 0), nudge_y = ifelse(mtcars$cyl==6, 9, 0))+

scale_color_discrete(name="cyl")+

scale_x_continuous(expand = c(0.5, 0))+

scale_y_continuous(expand = c(0.25, 0))+

theme_classic(base_size = 16)

也可以通过设置参数point.padding=NA不对点进行repel

set.seed(42)

mtcars$label <- rownames(mtcars)

ggplot(mtcars, aes(wt, mpg, label=label))+

geom_point(color="red")+ geom_text_repel(point.padding = NA)+

theme_classic(base_size = 16)

通过赋值某些label空字符“”来隐藏。

set.seed(42)

mtcars$label <- rownames(mtcars)

mtcars$label[1:15] <- ""

ggplot(mtcars, aes(wt, mpg))+ geom_point(aes(color=factor(cyl)), size=2)+

geom_text_repel(aes(color=factor(cyl), size=hp, label=label),

point.padding = unit(0.25, "lines"), box.padding = unit(0.25, "lines"),

nudge_y = 0.1)+ theme_classic(base_size = 16)

将标签控制在特定区域

通过设置参数xlim和ylim来限制label的位置

set.seed(42)

data <- mtcars

mu <- mean(data$wt)

left <- data[data$wt <mu, ]

right <- data[data$wt>=mu, ]

ggplot()+ geom_vline(xintercept = mu)+

geom_point(aes(wt, mpg), data=data)+

geom_text_repel(data=left, aes(wt, mpg, label=rownames(left),

color="Left half"), xlim=c(NA, mu))+

geom_text_repel(data=right, aes(wt, mpg, label=rownames(right),

color="Rigth half"), xlim=c(mu, NA))+ theme_classic(base_size = 16)


通过控制参数direction来决定label是左右移动还是上下移动, 默认是both

set.seed(42)

#direction="x" 左右移动

ggplot(mtcars)+

geom_point(aes(wt, mpg), color="red")+

geom_text_repel(aes(wt, mpg, label=rownames(mtcars)), direction="x")+

theme_classic(base_size = 16)+xlim(1, 6)

#direction="x" 上下移动

ggplot(mtcars)+

geom_point(aes(wt, mpg), color="red")+

geom_text_repel(aes(wt, mpg, label=rownames(mtcars)), direction="y")+

theme_classic(base_size = 16)+xlim(1, 6)

线图

set.seed(42)

ggplot(Orange, aes(age, circumference, color=Tree))+

geom_line()+

coord_cartesian(xlim=c(min(Orange$age), max(Orange$age)+90))+

geom_text_repel(data=subset(Orange, age==max(age)),

aes(label=paste("Tree", Tree)),size=6, nudge_x = 45, segment.color = NA)+

theme_classic(base_size = 16)+

theme(legend.position = "none")+

labs(title="Orange Trees", x="Age(days)", y="Circumference(mm)")

SessionInfo

sessionInfo()

## R version 3.4.0 (2017-04-21)

## Platform: x86_64-w64-mingw32/x64 (64-bit)

## Running under: Windows 8.1 x64 (build 9600)

##

## Matrix products: default

##

## locale:

## [1] LC_COLLATE=Chinese (Simplified)_China.936

## [2] LC_CTYPE=Chinese (Simplified)_China.936

## [3] LC_MONETARY=Chinese (Simplified)_China.936

## [4] LC_NUMERIC=C

## [5] LC_TIME=Chinese (Simplified)_China.936

##

## attached base packages:

## [1] stats graphics grDevices utils datasets methods base

##

## other attached packages:

## [1] ggrepel_0.6.5 ggplot2_2.2.1

##

## loaded via a namespace (and not attached):

## [1] Rcpp_0.12.11 digest_0.6.12 rprojroot_1.2 plyr_1.8.4

## [5] grid_3.4.0 gtable_0.2.0 backports_1.1.0 magrittr_1.5

## [9] evaluate_0.10 scales_0.4.1 rlang_0.1.1 stringi_1.1.5

## [13] lazyeval_0.2.0 rmarkdown_1.5 labeling_0.3 tools_3.4.0

## [17] stringr_1.2.0 munsell_0.4.3 yaml_2.1.14 compiler_3.4.0

## [21] colorspace_1.3-2 htmltools_0.3.6 knitr_1.16 tibble_1.3.3


 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)

公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

R语言可视化学习笔记之ggrepel包相关推荐

  1. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  2. R语言可视化学习笔记之ggridges包

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  3. R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  4. R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length参数为Inf不添加标签线段)

    R语言ggplot2可视化:可视化散点图并为散点图中的数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length ...

  5. R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direction参数显示部分数据点的标签在可视化图像的顶部)

    R语言ggplot2可视化:可视化散点图并为散点图中的部分数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置nudge_y参数和direct ...

  6. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  7. R语言小白学习笔记12—概率分布

    R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...

  8. R语言数据处理学习记录--使用linkET包完成mental test

    R语言数据处理学习记录–使用linkET包完成mental test 注:本文仅作为自己的学习记录以备复习查阅 一 简单介绍一下 这个包依旧是来自于GitHub上,作者给出的介绍:linkET的目标是 ...

  9. R语言小白学习笔记3—R语言读取数据

    R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...

  10. r型聚类典型指标_应用统计学与R语言实现学习笔记(十)——聚类分析

    Chapter 10 Cluster Analysis 本篇是第十章,内容是聚类分析.由于之后的几章是典型的分析方法.而且在14章的案例里面可能不会体现,所以内容里会渗透较多的R语言操作.由于简书不支 ...

最新文章

  1. 外企员工职场跃迁:他们将目光转向杭州 转向云计算
  2. oracle 查询关键字,Oracle 中的SELECT 关键字(查询、检索)
  3. Spring2.5的新特性
  4. SystemInit时钟系统初始化函数剖析
  5. 暑期训练日志----2018.8.14
  6. sqlmap地表最强sql注入检测工具学习使用
  7. 【Java并发编程】之十一:线程间通信中notify通知的遗漏
  8. insmod module 失败(skyeye + armlinux)
  9. 真实场景下如何解决类别不平衡问题
  10. J2ME 模拟短信发送界面开发程序
  11. 16 岁高中生成功将 Linux 移植到 iPhone,并贴出详细指南
  12. ActiveReports报表控件V11 SP1版本正式发布!
  13. html记忆游戏,html5 最强大脑最强记忆游戏
  14. 为什么 Flutter 是跨平台开发的终极之选
  15. 移动机器人下位机软件
  16. Word无法找到宏或宏被禁用如何解决
  17. 传输层协议TCP(5)
  18. PIL gray img /灰度图 转OpenCV格式灰度图
  19. 苹果浏览器显示打不开改网页无法连接服务器,为什么苹果浏览器老是显示safari打不开该网页答案...
  20. C#.Net干货分享-构建Aocr_ImageHelper读取图片文字做解析

热门文章

  1. 借着酒劲儿,是真敢说!程序员酒后吐真言
  2. Kubernetes 弃用 Docker刷爆了网络,我们公司也慌了!
  3. 你见过哪些操蛋的代码?切勿模仿! 否则后果自负
  4. Redis牛逼!轻松实现实时订阅推送
  5. 工作5年,别人成了架构师,你却还在基层打滚
  6. 小米IPO前员工写文爆料内部真实见闻—期权 部分裁员 离职大公开!
  7. 抵御风险——漫谈运维核心价值和方法论
  8. 你整明白了吗?Linux Shell 中各种括号的作用 ()、(())、[]、[[]]、{}
  9. jmeter constant timer 如何添加_性能测试-Jmeter——软件测试圈-软件测试文章
  10. 四面快手归来,分享Java真题及面经:策略模式+红黑树+Java锁+Redis+Kafka等分布式