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几何对象之标签与文本的更多相关文章

  1. R语言与医学统计图形-【28】ggplot2扩展包ggrepel、ggsci、gganimate、ggpubr

    ggplot2绘图系统--扩展包ggrepel.ggsci.gganimate.ggpubr等 部分扩展包可在CRAN直接下载,有些需借助devtools包从Github下载. 1. ggrepel包 ...

  2. R语言与医学统计图形-【18】ggplot2几何对象汇总

    ggplot2绘图系统--几何对象汇总 前面介绍了常见的几种基本的几何对象,并且介绍了scale.stat等其他要素.后续将介绍position.themes.coord和faceting等函数. 这 ...

  3. R语言与医学统计图形-【12】ggplot2几何对象之条图

    ggplot2绘图系统--几何对象之条图(包括误差条图) 1.条图 格式: geom_bar(mapping = , data = , stat = 'count', #统计变换默认计数 positi ...

  4. R语言与医学统计图形-【22】ggplot2统计变换函数

    ggplot2绘图系统--统计变换函数 在几何对象中以参数stat形式出现. 不同的几何对象对应不同的统计变换函数. 以直方图为例,几何对象geom_histogram(..., stat='bin' ...

  5. R语言与医学统计图形-【17】ggplot2几何对象之热图

    ggplot2绘图系统--heatmap.geom_rect 这里不介绍更常见的pheatmap包. 1.heatmap函数 基础包. data=as.matrix(mtcars) #接受矩阵 hea ...

  6. R语言与医学统计图形-【15】ggplot2几何对象之线图

    ggplot2绘图系统--几何对象之线图 曲线:点连线.路径曲线.时间序列曲线.模型拟合曲线...... 直线:水平直线.垂直直线.斜线. 1.曲线 对象及其参数. #路径图 geom_path(ma ...

  7. R语言与医学统计图形-【11】ggplot2几何对象之散点图

    ggplot2绘图系统--几何对象之散点图 以geom开头的函数超过30个.几何对象和标度函数scale密不可分.只有在aes中传入某个变量,scale才能发挥作用. 所谓标度scale,就是图形遥控 ...

  8. R语言与医学统计图形-【14】ggplot2几何对象之直方密度图

    ggplot2绘图系统--几何对象之直方图.密度图 1.直方图 参数. geom_histogram(mapping = , data = , stat = 'bin', #统计变换,概率密度为den ...

  9. R语言与医学统计图形-【13】ggplot2几何对象之盒形图

    ggplot2绘图系统--几何对象之盒形图 参数: geom_boxplot(mapping = , #lower,middle,upper,x,ymax,ymin必须(有默认) #alpha/col ...

随机推荐

  1. UltraSoft - Beta - Scrum Meeting 3

    20200519会议纪要 Date: May 19th, 2020. Scrum 情况汇报 进度情况 组员 负责 今日进度 q2l PM.后端 暂无 Liuzh 前端 暂无 Kkkk 前端 完成了前端 ...

  2. 【二食堂】Alpha - Scrum Meeting 7

    Scrum Meeting 7 例会时间:4.17 11:40 - 12:00 进度情况 组员 昨日进度 今日任务 李健 1. 继续文本区域的开发,先完成目前简陋的添加方式,再区实现勾选功能issue ...

  3. 搬运1:关于对C语言中数组名取地址加减等操作的一点探究

    对于数组名取地址强制转换的操作 偶然在晚上学了C语言指针后网页闲逛找题时,被一个数组名取地址搞糊涂了,在自己试验加探索后我稍微悟了一点东西. 代码如下: #include<stdio.h> ...

  4. 2021.8.21考试总结[NOIP模拟45]

    T1 打表 由归纳法可以发现其实就是所有情况的总和. $\frac{\sum_{j=1}^{1<<k}(v_j-v_{ans})}{2^k}$ $code:$ 1 #include< ...

  5. 攻防世界 杂项 12.Training-Stegano-1

    题目描述: 这是我能想到的最基础的图片隐写术.啊这 题目分析: 最初还以为直接右击属性查看呢 然后用notepad++看看,一团乱码,结果在最后发现了passwd, 然后这就是flag:stegano ...

  6. 51nod_1003 阶乘后面0的数量(求N!中5的个数,数论)

    题意: n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0.   Input 一个数N(1 <= N <= 10^9) OutPut 输出0的数 ...

  7. hdu 2159 FATE(DP)

    题意: 小余玩游戏,离最后一级还需n的经验值,但是他已经很厌烦了,还剩下m的忍耐度.每杀一只怪小余会得到相应的经验,同时减掉相应的忍耐度. 当忍耐度降到0或者0以下时,小余就不会再玩这个游戏.小余还说 ...

  8. linux 关于 环境变量

    有关环境变量的文件 系统级环境变量:每一个登录到系统的用户都能够读取到系统级的环境变量       用户级环境变量:每一个登录到系统的用户只能够读取属于自己的用户级的环境变量  文件加载顺序: ==& ...

  9. request/response解决中文乱码!!!

    Request中文乱码问题以及解决方案 补充三个知识点: Get是URL解码方式.默认解码格式是Tomcat编码格式.所以URL解码是UTF-8,覆盖掉了request容器解码格式 Post是实体内容 ...

  10. PTA 最小堆插入元素和删除堆顶(无哨兵元素) (20分)

    PTA 最小堆插入元素和删除堆顶(无哨兵元素) (20分) 对于给定的最小堆(优先队列),分别实现插入元素和删除堆顶的函数. 函数接口定义: int insertIntoHeap(struct Hea ...