ggplot2绘图系统——位置调整函数

可以参数position来调整,也有专门的函数position_*系列来设置。

位置函数汇总:

1.排列

并排排列

mean <- runif(12,1,3)
lower <- mean-runif(12,0,2)
upper <- mean+runif(12,0,2)
mydata <- data.frame(group=rep(LETTERS[1:4],each=3),
levels=rep(c('low','middle','high'),4),
mean=mean,lower=lower,upper=upper)
dodge <- position_dodge(width = 0.5)
ggplot(mydata,aes(levels,ymin=lower,ymax=upper,color=as.factor(group)))+
geom_errorbar(position = dodge,width=0.2,size=1.2)+
geom_point(aes(levels,mean),position = dodge,size=4)

堆栈排列

death <- c('胃癌','肺癌','食管癌','肝癌','脑癌')
percent <- c(0.21,0.28,0.09,0.32,0.1)
pro=scales::percent(percent)
cancer <- data.frame(death=death,per=percent,
disease='cancer',prop=pro) ggplot(cancer,aes(x=disease,y=per,fill=death))+
geom_bar(stat = 'identity')+
geom_text(aes(label=prop),
position = position_stack(vjust = 0.5),size=6.5)

2.扰动点

a <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+geom_point()
b <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+
geom_jitter()
c <- ggplot(mpg,aes(class,hwy))+geom_boxplot()+
geom_point(position = 'jitter')
grid.arrange(a,b,c,ncol=3)



上图b和c的扰动方式稍有不同。

3.水平和垂直的调整

包括hjust/vjustposition_nudge等,注意nudge(推动)不能作为postion参数的选项,即不能类似geom_point(position='nudge')

df <- data.frame(x=c(1,3,2,5),y=c('a','b','c','d'))

#在点的原位置添加标签
a <- ggplot(df,aes(x,y))+geom_point()+geom_text(aes(label=y))
#标签向下移动一个单位
b <- ggplot(df,aes(x,y))+geom_point()+geom_text(aes(label=y),
position=position_nudge(y=-0.1))
grid.arrange(a,b,ncol=2)

4.有规则扰动

同样只能作为函数position_jitterdodge使用。

同一组内,红色点只出现在红色盒形上,不会出现在其他位置。

dsub <- diamonds[sample(nrow(diamonds),1000),]
#无规则
a <- ggplot(dsub,aes(x=cut,y=carat,fill=clarity))+
geom_boxplot(outlier.size = 0)+
geom_point(pch=21,position = position_jitter())
#有规则
b <- ggplot(dsub,aes(x=cut,y=carat,fill=clarity))+
geom_boxplot(outlier.size = 0)+
geom_point(pch=21,position = position_jitterdodge()) grid.arrange(a,b,ncol=2)

R语言与医学统计图形-【24】ggplot位置调整函数的更多相关文章

  1. R语言与医学统计图形【1】par函数

    张铁军,陈兴栋等 著 R语言基础绘图系统 基础绘图包之高级绘图函数--par函数 基础绘图包并非指单独某个包,而是由几个R包联合起来的一个联盟,比如graphics.grDevices等. 掌握par ...

  2. R语言与医学统计图形【8】颜色的选取

    R语言基础绘图系统 基础绘图包之低级绘图函数--内置颜色. 1.内置颜色选取 功能657种内置颜色.colors() 调色板函数:palette(), rgb(), rainbow(). palett ...

  3. R语言与医学统计图形【6】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--定义坐标轴.图例.文本 低级绘图函数:本身不具备图形绘制能力,只是在已有图形基础上添加元素. 函数 功能 arrows 添加箭头 axis 坐标轴 bo ...

  4. R语言与医学统计图形【5】饼图、条件图

    R语言基础绘图系统 基础图形--饼图.克利夫兰点图.条件图 6.饼图 pie(rep(1,26),col=rainbow(26), labels = LETTERS[1:26], #标签 radius ...

  5. R语言与医学统计图形【4】直方图、金字塔图

    R语言基础绘图系统 基础图形--直方图.金字塔图 3.直方图 参数设置及比较. op <- par(mfrow=c(2,3)) data <- rnorm(100,10,5) hist(d ...

  6. R语言与医学统计图形【3】条形图、误差图

    R语言基础绘图系统 基础图形--条形图.误差图 3.条形图 barplot接收的数据是矩阵而非数据框. data <- sample(c(50:80),5) barplot(data,col=h ...

  7. R语言与医学统计图形【2】散点图、盒形图

    R语言基础绘图系统 基础图形--散点图.盒形图 plot是一个泛型函数(generic method),对于不同的数据绘制不同的图形. par函数的大部分参数在plot中通用. 1.散点图 plot绘 ...

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

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

  9. R语言与医学统计图形【7】低级绘图函数

    R语言基础绘图系统 基础绘图包之低级绘图函数--气泡图.一页多图.背景网格.添加线条和散点.数学表达式 4.气泡图 symbols是高级绘图函数,可在图上添加标记,标记的形状包括:circles,sq ...

随机推荐

  1. Beta版本发布计划

    Beta版本新功能 小程序v2.0新功能 新功能列表 页面 新功能描述 图片涂鸦页 增加了马赛克方块形式的涂鸦,同样支持撤销和保存 图片裁切页 增加了图片裁切功能,实现对目标图片的尺寸进行裁切 编辑图 ...

  2. 2021.8.4考试总结[NOIP模拟30]

    T1 毛衣衬 将合法子集分为两个和相等的集合. 暴力枚举每个元素是否被选,放在哪种集合,复杂度$O(3^n)$.考虑$\textit{meet in the middle}$. 将全集等分分为两部分分 ...

  3. 大厂面试题分享:如何让(a===1&&a===2&&a===3)的值为true?

    当我第一次看到这一题目的时候,我是比较震惊的,分析了下很不合我们编程的常理,并认为不大可能,变量a要在同一情况下要同时等于1,2和3这三个值,这是天方夜谭吧,不亚于哥德巴赫1+1=1的猜想吧,不过一切 ...

  4. https的加密解密过程

    前置知识 SSL是90年代Netscape弄出来的一套东西,为的是解决HTTP协议明文传输数据的问题.后来SSL慢慢成了事实上的标准,于是IETF就把SSL标准化了,名字叫做TLS,TLS 1.0其实 ...

  5. readelf

    readelf的help内容如下所示: Usage: readelf <option(s)> elf-file(s) Display information about the conte ...

  6. hdu 5094 Maze (BFS+状压)

    题意: n*m的迷宫.多多要从(1,1)到达(n,m).每移动一步消耗1秒.有P种钥匙. 有K个门或墙.给出K个信息:x1,y1,x2,y2,gi    含义是(x1,y1)与(x2,y2)之间有gi ...

  7. js和jq文档操作

    JS文档操作 一.dom树结构 1.元素节点 2.文本节点 3.属性节点      不属于元素节点的子节点  4.文档节点(document) 二.处理元素节点    method    1.docu ...

  8. SSH 提示密码过期,如何通过 ansible 批量更新线上服务器密码

    起因 线上环境是在内网,登陆线上环境需要使用 VPN + 堡垒机 登陆,但是我日常登陆线上环境都是 VPN + 堡垒机 + Socks5常驻代理,在shell端只需要保存会话,会话使用socks5代理 ...

  9. k8s入坑之路(2)kubernetes架构详解

    每个微服务通过 Docker 进行发布,随着业务的发展,系统中遍布着各种各样的容器.于是,容器的资源调度,部署运行,扩容缩容就是我们要面临的问题.   基于 Kubernetes 作为容器集群的管理平 ...

  10. 第二课 Dubbo设计的架构设计

    总体架构 Dubbo的总体架构,如图所示: Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层.图中左边淡蓝背景的为 ...