R语言与医学统计图形-【16】ggplot2几何对象之标签与文本
ggplot2绘图系统——添加标签与文本、数学表达式、条形图文本、注释
1. 文本与标签添加
geom_label的文本将以标签形式出现,即文本会带有一个背景色。
geom_text则是纯文本形式展示。
annotaete函数则在图上添加一个注释图层。
文本与标签区别
p <- ggplot(mtcars,aes(wt,mpg,label=rownames(mtcars)))
a <- p+geom_text()
b <- p+geom_label()
gridExtra::grid.arrange(a,b,ncol=2)
将散点与文本组合在一起。
p+geom_point(color='dodgerblue')+
geom_text(nudge_x = 0.15, #将文本整体位置平移
angle=45) #文本倾斜
变量映射。
scale_color_manual(values=c('black','white','gray'))
因为同时映射了填充色和字体颜色,所以图例中出现字母a,目前还不能很好去掉。建议除了label映射外,不要进行多余映射。
2.数学表达式添加
数学表达式本质也是一种文本,但需要解析,如parse参数。
df <- data.frame(x=1:8,y=1.2+x^2)
ggplot(df,aes(x,y))+geom_point()+
geom_smooth()+
geom_text(aes(x=4,y=40),label='y == 1.2 +x^2',
parse = TRUE, size=7)
3. 在条形图上添加文本
#条形图上添加文本
df <- data.frame(x=factor(c(1,1,2,2,2,1)),
y=c(18,31,22,14,19,32),
grp=c('a','b','a','b','c','c'))
ggplot(df,aes(x=x,y=y,fill=grp))+
geom_bar(stat = 'identity',position = 'dodge')+
geom_text(aes(y=y+1,label=y),position = position_dodge(0.9))
#在y+1处添加文本,使之在条柱上方,内容为y
#postion_dodge函数表示标签据条柱中心位置的偏移量
堆栈式条图文本
df <- transform(df,mid_y=ave(df$y,df$x,FUN = function(var)
cumsum(var)-(0.5*var)))
#ave分类汇总统计函数,类似tapply。根据x不同水平计算函数y值
ggplot(data=df,aes(x,y,fill=grp,label=y))+
geom_bar(stat='identity')+
geom_text(aes(y=mid_y),size=9)
上图堆栈顺序不对,两次翻转调整。
df <- transform(df,mid_y=ave(ave(df$y,df$x,FUN=rev),
df$x,FUN = function(var)
cumsum(var)-(0.5*var)))
#根据x水平对y进行翻转
ggplot(data=df,aes(x,y,fill=grp,label=y))+
geom_bar(stat = 'identity')+
geom_text(aes(y=ave(df$mid_y,df$x,FUN=rev)),size=9)
#再次翻转
ggplot(df,aes(x,y,fill=grp,label=y))+
geom_bar(stat='identity')+
geom_text(aes(y=mid_y),size=9,
position = position_stack(vjust=0.5))
结合位置函数简化代码。
df <- data.frame(x=factor(c(1,1,2,2,2,1)),
y=c(18,31,22,14,19,32),
grp=c('a','b','a','b','c','c'))
ggplot(df,aes(x=x,y=y,fill=grp))+
geom_bar(stat = 'identity',position = 'stack')+
geom_text(aes(label=y),position = position_stack(vjust = 0.5),size=6)
4.注释添加
annotate函数在图上某个位置或某区域添加注释,无需映射变量,只需指定位置。
除了添加文本外,还可在任意位置添加散点、矩形、线段等元素。
a <- p+annotate("text",x=4,y=25,label='I love R',
size=5,color='forestgreen')
#添加矩形
b <- p+annotate('rect',xmin=3,xmax=4.2,ymin=12,
ymax = 21,alpha=.2,fill='forestgreen')
#线段
c <- p+annotate('segment',x=2.5,xend=4,y=15,
yend=25,color='blue')
#点线段
d <- p+annotate('pointrange',x=3.5,y=20,ymin=12,
ymax=28,color='red',size=1.5)
grid.arrange(a,b,c,d,ncol=4)
R语言与医学统计图形-【16】ggplot2几何对象之标签与文本的更多相关文章
- R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr
ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...
- R语言与医学统计图形-【18】ggplot2几何对象汇总
ggplot2绘图系统--几何对象汇总 前面介绍了常见的几种基本的几何对象,并且介绍了scale.stat等其他要素.后续将介绍position.themes.coord和faceting等函数. 这 ...
- R语言与医学统计图形-【12】ggplot2几何对象之条图
ggplot2绘图系统--几何对象之条图(包括误差条图) 1.条图 格式: geom_bar(mapping = , data = , stat = 'count', #统计变换默认计数 positi ...
- R语言与医学统计图形-【22】ggplot2统计变换函数
ggplot2绘图系统--统计变换函数 在几何对象中以参数stat形式出现. 不同的几何对象对应不同的统计变换函数. 以直方图为例,几何对象geom_histogram(..., stat='bin' ...
- R语言与医学统计图形-【17】ggplot2几何对象之热图
ggplot2绘图系统--heatmap.geom_rect 这里不介绍更常见的pheatmap包. 1.heatmap函数 基础包. data=as.matrix(mtcars) #接受矩阵 hea ...
- R语言与医学统计图形-【15】ggplot2几何对象之线图
ggplot2绘图系统--几何对象之线图 曲线:点连线.路径曲线.时间序列曲线.模型拟合曲线...... 直线:水平直线.垂直直线.斜线. 1.曲线 对象及其参数. #路径图 geom_path(ma ...
- R语言与医学统计图形-【11】ggplot2几何对象之散点图
ggplot2绘图系统--几何对象之散点图 以geom开头的函数超过30个.几何对象和标度函数scale密不可分.只有在aes中传入某个变量,scale才能发挥作用. 所谓标度scale,就是图形遥控 ...
- R语言与医学统计图形-【14】ggplot2几何对象之直方密度图
ggplot2绘图系统--几何对象之直方图.密度图 1.直方图 参数. geom_histogram(mapping = , data = , stat = 'bin', #统计变换,概率密度为den ...
- R语言与医学统计图形-【13】ggplot2几何对象之盒形图
ggplot2绘图系统--几何对象之盒形图 参数: geom_boxplot(mapping = , #lower,middle,upper,x,ymax,ymin必须(有默认) #alpha/col ...
随机推荐
- relativeLayout相对布局的嵌套在py中的引用
from kivy.app import App from kivy.uix.button import Button from kivy.uix.relativelayout import Rela ...
- JVM:体系结构
JVM:体系结构 本笔记是根据bilibili上 尚硅谷 的课程 Java大厂面试题第二季 而做的笔记 概览 Java GC 主要回收的是 方法区 和 堆 中的内容 类加载器 类加载器是什么 双亲委派 ...
- 第一次Alpha Scrum Meeting
本次会议为Alpha阶段第一次Scrum Meeting会议 会议概要 会议时间:2021年4月22日 会议地点:北航Inspiration Space咖啡厅 会议时长:1小时 会议内容简介:本次会议 ...
- Sharding-JDBC基本使用,整合Springboot实现分库分表,读写分离
结合上一篇docker部署的mysql主从, 本篇主要讲解SpringBoot项目结合Sharding-JDBC如何实现分库分表.读写分离. 一.Sharding-JDBC介绍 1.这里引用官网上的介 ...
- 【做题记录】CF1444A Division
CF1444A Division 题意: 给定 \(t\) 组询问,每组给两个数 \(p_i\) 和 \(q_i\) ,找出最大的整数 \(x_i\) ,要求 \(p_i\) 可被 \(x_i\) 整 ...
- Centos 8 升级ssl到1.1.1h
升级到1.1.1h版本 #编译openssl和安装 ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl & ...
- Notepad++ 过滤注释行和空行
Notepad++ 删除指定字符开头的行的正则表达式 1.删除A之后的所有字符用:A.*$ 2.删除A之前的所有字符用:^([^s]*)A ####如果是其他字符就把A替换为其他字符 注释:如何是特殊 ...
- 新手使用python以及pycharm看过来
前言 随着互联网时代的进步,人类与计算机之前的沟通交流越来越便捷,自此交流的媒介--编程语言吸引力更多的人学习,今天我们就来谈谈当前市面上最火的编程语言 1.文件的概念 什么是文件夹.文件 其实是操作 ...
- httprunner3源码解读(1)简单介绍源码模块内容
前言 最近想着搭建一个API测试平台,基础的注册登录功能已经完成,就差测试框架的选型,最后还是选择了httprunner,github上已经有很多开源的httprunner测试平台,但是看了下都是基于 ...
- mybatis之结果集的映射方式
查询的几种情况 // 1)查询单行数据返回单个对象 public Employee getEmployeeById(Integer id ); // 2) 查询多行数据返回对象的集合 public L ...