zoukankan      html  css  js  c++  java
  • R语言与医学统计图形-【24】ggplot位置调整函数

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

    可以参数position来调整,也有专门的函数position_*系列来设置。
    位置函数汇总:
    image.png

    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)
    

    image.png

    堆栈排列

    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)
    

    image.png

    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)
    

    image.png
    上图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)
    

    image.png

    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)
    

    image.png

  • 相关阅读:
    数据库基础-INDEX
    LINQ教程
    NPOI导出EXCEL
    WPF数据双向绑定
    WPF控件数据单项绑定
    HelloWorld IL代码
    Python基础教程(英文视频教学)
    ado.net的5个主要对象
    Linux学习-0627
    C#中Abstract和Virtual
  • 原文地址:https://www.cnblogs.com/jessepeng/p/12307794.html
Copyright © 2011-2022 走看看