答读者问~ggplot2画图添加拟合方程的R2并且在右上角添加星号表示显著性;只有分位数和中位数数据画箱线图

2020-11-24 15:25:59 浏览数 (1)

我记得之前分享过一篇文章 ggplot2绘图添加文本注释上下标问题,ggplot2画图如果添加文本注释可以用annotate()这个函数。简单的小例子

代码语言:javascript复制
library(extrafont)
fonts()
ggplot(df,aes(x=A,y=B,color=D)) 
  geom_point(aes(shape=D),size=10) 
  theme_bw() 
  theme(legend.position = "none") 
  annotate(geom = "text",x=3,y=8.5,label="小明的数据分析笔记本",
           size=10,family="STKaiti")

image.png

如果要添加上标,annotate()函数label参数的写法

代码语言:javascript复制
ggplot(df,aes(x=A,y=B,color=D)) 
  geom_point(aes(shape=D),size=10) 
  theme_bw() 
  theme(legend.position = "none") 
  annotate(geom = "text",x=3,y=8.5,
           label="atop(小明的数据分析笔记本^'***')",
           parse=T,
           size=10)

image.png

添加拟合方程的R2的写法

代码语言:javascript复制
ggplot(df,aes(x=A,y=B,color=D)) 
  geom_point(size=5) 
  annotate("text",x=3,y=7.5,
           label="atop(R^2==0.9^'***')",
           parse=T,size=10) 
  theme_bw() 
  theme(legend.position="none")

image.png

公众号一位读者留言问 自己的数据是经过计算的的只有分位数和中位数的数据,应该如何画箱线图?我自己能想到的一个办法是利用annotate()函数画线段,将其组合成为一个箱子。

下面举一个简单的小例子

代码语言:javascript复制
library(ggplot2)
ggplot() 
  annotate(geom = "segment",x=1,xend=1.5,y=1,yend=1) 
  annotate(geom = "segment",x=1,xend=1.5,y=2,yend=2) 
  annotate(geom = "segment",x=1,xend=1,y=1,yend=2) 
  annotate(geom = "segment",x=1.5,xend=1.5,y=1,yend=2) 
  annotate(geom = "segment",x=1,xend=1.5,y=1.5,yend=1.5) 
  xlim(0,5) 
  ylim(0,5)

image.png

当然问题又来了,如果是这样作图应该如何填充颜色呢?

应该还有其他办法可以实现,问题先留在这里,想到解决办法再来补充

0 人点赞