精华内容
下载资源
问答
  • ggplot2箱线图绘制规范

    2021-01-12 12:40:55
    他给我找了个箱线图,这个百度都有代码,但关于数据的排列,转换,提取,我觉得对于小白肯定迷迷糊糊,因为有的画图软件的数据排列方式的思维方式已经固定,可能你不能很好的接受ggplot的数据排列。 1、模板 他发我...


    今天一朋友想学R语言,问我如何学,我建议是针对问题,如何针对问题,比如文献找到一个图,照着画出来就对了。他给我找了个箱线图,这个百度都有代码,但关于数据的排列,转换,提取,我觉得对于小白肯定迷迷糊糊,因为有的画图软件的数据排列方式的思维方式已经固定,可能你不能很好的接受ggplot的数据排列。

    1、模板

    他发我的模板和他自己做的
    在这里插入图片描述

    2、数据

    他发我的数据格式,一看就知道是那个软件,稍微整理后保存csv
    在这里插入图片描述

    3、导入数据整理

    变量类型转换、数据列转换、数据提取

    library(ggplot2)
    library(dplyr)
    library(tidyr)
    
    data.xz <- read.csv("xz20210112.csv") ##导入数据
    class(data.xz)##查看数据类型data.frame数据框,matric矩阵,list表(这个复杂)
    str(data.xz)##查看变量类型factor因子型,int整数(数值型)
    data.xz$CO2 <- as.factor(data.xz$CO2.concentration)##创造变量
    str(data.xz)##查看变量类型
    summary(data.xz)##数据基本概况
    data.xz1 <- gather(data = data.xz,key = "IT",value = "value",3:6)
    summary(data.xz1)
    ##提取数据
    data.xz1_A <- filter(data.xz1,IT=="IT50A" | IT== "IT90A")
    data.xz1_G <- filter(data.xz1,IT=="IT50g" | IT== "IT90g")
    
    

    4、画图

    背景、标签、theme设定、图例、坐标轴lab细节

    ##画图
    ln.a <- ggplot(data = data.xz1_LNA,aes(x=CO2,y=value,fill=IT))+
      stat_boxplot(geom = "errorbar",position = position_dodge())+
      geom_boxplot()+
      geom_text(data = data.xz1_LNA_max,
                   aes(label = c("c","c","a","a","bc","bc","a","a","ab","b","a","a"),
                       x=data.xz1_LNA_max$CO2,
                       y=data.xz1_LNA_max$value.max+20),
                   position = position_dodge(0.7),family="RMN",cex=4)+
      geom_text(aes(label="LN",x=6,y=500,family="RMN"))+
      ylab(expression(paste("S"," (","  ",ha^-1,")")))+xlab(expression(paste("O"[2]," ","Concentration")))+
      theme_bw()+
      guides(fill=guide_legend(title=NULL))##去除图例标题
      ln.a
    

    5 最终图

    在这里插入图片描述

    展开全文
  • 比较2个样本的基因表达量啊什么的,这个时候,就会想说如何实现箱线图的美化,以及最近看到一个把正常基因表达量的箱线图画成了直方图加散点图再加误差线的形式,因此想趁空闲来写下我的ggplot2箱线图的美化之路。

    前言

    由于自己科研工作的需要,经常需要画一些箱线图,比较2个样本的基因表达量啊什么的,这个时候,就会想说如何实现箱线图的美化,以及最近看到一个把正常基因表达量的箱线图画成了直方图加散点图再加误差线的形式,因此想趁空闲来写下我的ggplot2的箱线图的美化之路。

    数据准备

    首先先生成一个测试数据集

    data <- c(rnorm(200))
    name <- c(rep("control", 99),rep("treat",101))
    res <- data.frame(data,name)
    

    得到的数据集就是这样子的:
    head 查看res数据框内容

    箱线图美化

    01 一个平平无奇的箱线图

    library(ggplot2)
    g <- ggplot(res, aes(name, data))+geom_boxplot(aes(fill = name ))
    

    在这里插入图片描述

    02 给箱线图加上误差线

    library(ggsignif)
    compared_list = list(c("control", "treat"))  #设定比较组
    g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2)
    

    在这里插入图片描述
    如果想要p值以星号来显示显著性,可以增加一个参数:
    map_signif_level=T

    g <- g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2, map_signif_level=T)
    

    在这里插入图片描述

    03 加上散点的信息

    g <- g + geom_jitter(aes(fill=name),width =0.2,shape = 21,size=1)
    

    在这里插入图片描述

    04 去除网格线和背景,更改颜色

    选颜色的时候,为了解决我的纠结和拯救大家谜一般的审美,这里祭出我的ggsci大法。

    ggsci是ggplot的主题包,它提供一系列高质量的调色板,其灵感来自于科学期刊、数据可视化库、科幻电影和电视节目中使用的颜色。ggsci中的调色板可以作为ggplot2 scales使用。

    不过我这里只有2个组,完全不能体现出它的便利和美,但真的很推荐大家尝试,一句get杂志同款颜色,顺带拯救审美。

    #去除网格线和背景
    g <- g+ theme_bw() + theme(panel.grid.major =element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(),axis.line = element_line(colour = "black")) 
    #更换颜色
    library(ggsci)
    g <- g + scale_fill_npg()
    

    在这里插入图片描述
    反正我觉得是有美了的……

    05 箱线图变带误差线、散点的柱形图

    首先需要计算下数据

    library(Rmisc)
    input <- summarySE(res, measurevar="data", groupvars=c("name"))
    

    得到的input就是这样子:
    在这里插入图片描述
    这里看到均值一个大于0,一个小于0,画成柱形图会很尴尬,所以我稍微换了个数据……

    data <- c(rnorm(99,10,3),rnorm(101,20,5))
    name <- c(rep("control", 99),rep("treat",101))
    res <- data.frame(data,name)
    input <- summarySE(res, measurevar="data", groupvars=c("name"))
    g <- ggplot(input, aes(name, data, fill=name)) + 
      geom_bar(position=position_dodge(), stat="identity") +
      geom_errorbar(aes(ymin=data-se, ymax=data+se),
                    width=.3, # 设置误差线的宽度 
                    position=position_dodge(.9)) +  
      theme_bw() +theme(panel.grid.major =element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(),axis.line = element_line(colour = "black"))
    

    在这里插入图片描述
    最后要把散点和显示显著性的给加上,这里其实就是在ggplot中2个图叠加,不过2个图共用坐标轴。这里需要告诉ggplot后面加的geom是基于一个不同的数据集

    g <- g + geom_signif(comparisons = compared_list, test = t.test, step_increase = 0.2)  +
      geom_jitter(data = res, aes(name,data,fill=name),width =0.2,shape = 21,size=1) +
      geom_signif(data = res, aes(name,data),comparisons = compared_list, test = t.test, step_increase = 0.2)
    

    得到结果图:
    在这里插入图片描述
    最后倔强地美化一下:

    g <- g +  scale_fill_aaas() +labs(subtitle="My final figure",x="Sample Name", y="Sample size")
    

    在这里插入图片描述
    好了,快乐下班,如果还是觉得不ok,这里推荐Adobe Illustrator,神器up!

    参考资料

    在R中使用ggplot2覆盖两个图

    教你用科学杂志喜欢的配色作图——R包ggsci

    展开全文
  • 使用R包ggplot2画箱线图(boxplot)

    万次阅读 多人点赞 2016-10-21 12:05:41
    最近在整理数据,写论文,需要画图。厌烦每次画图都要重新翻代码(几天不用就忘...这一次是画箱线图,即boxplot。数据输入格式如下:Expression_level Organ_type Count unexpressed vegetative_organs 699 unexpressed

      最近在整理数据,写论文,需要画图。厌烦每次画图都要重新翻代码(几天不用就忘干净了),所以打算将每次画图的代码以及数据格式保存下来,以便以后查阅。这一次是画箱线图,即boxplot。

    数据输入格式如下:
    Expression_level        Organ_type      Count
    unexpressed     vegetative_organs       699
    unexpressed     vegetative_organs       700
    unexpressed     vegetative_organs       660
    unexpressed     vegetative_organs       666
    unexpressed     vegetative_organs       672
    unexpressed     vegetative_organs       731
    unexpressed     vegetative_organs       725
    unexpressed     vegetative_organs       712
    unexpressed     vegetative_organs       720
    unexpressed     reproductive_organs     624
    unexpressed     reproductive_organs     617
    unexpressed     reproductive_organs     566
    unexpressed     reproductive_organs     693
    unexpressed     reproductive_organs     634
    unexpressed     reproductive_organs     697
    unexpressed     reproductive_organs     674
    unexpressed     reproductive_organs     703
    unexpressed     reproductive_organs     711
    unexpressed     reproductive_organs     556
    unexpressed     reproductive_organs     743
    unexpressed     reproductive_organs     760
    low_expressed   vegetative_organs       1187
    low_expressed   vegetative_organs       1182
    low_expressed   vegetative_organs       1217
    low_expressed   vegetative_organs       1220
    low_expressed   vegetative_organs       1213
    low_expressed   vegetative_organs       1145
    low_expressed   vegetative_organs       1162
    low_expressed   vegetative_organs       1178
    low_expressed   vegetative_organs       1159
    low_expressed   reproductive_organs     1243
    low_expressed   reproductive_organs     1245
    low_expressed   reproductive_organs     1286
    low_expressed   reproductive_organs     1149
    low_expressed   reproductive_organs     1244
    low_expressed   reproductive_organs     1144
    low_expressed   reproductive_organs     1175
    low_expressed   reproductive_organs     1148
    low_expressed   reproductive_organs     1131
    low_expressed   reproductive_organs     1298
    low_expressed   reproductive_organs     1131
    low_expressed   reproductive_organs     1114
    medium_expressed        vegetative_organs       20
    medium_expressed        vegetative_organs       26
    medium_expressed        vegetative_organs       32
    medium_expressed        vegetative_organs       23
    medium_expressed        vegetative_organs       23
    medium_expressed        vegetative_organs       33
    medium_expressed        vegetative_organs       23
    medium_expressed        vegetative_organs       19
    medium_expressed        vegetative_organs       25
    medium_expressed        reproductive_organs     31
    medium_expressed        reproductive_organs     42
    medium_expressed        reproductive_organs     45
    medium_expressed        reproductive_organs     51
    medium_expressed        reproductive_organs     21
    medium_expressed        reproductive_organs     50
    medium_expressed        reproductive_organs     43
    medium_expressed        reproductive_organs     40
    medium_expressed        reproductive_organs     49
    medium_expressed        reproductive_organs     41
    medium_expressed        reproductive_organs     21
    medium_expressed        reproductive_organs     19
     high_expressed vegetative_organs       6
     high_expressed vegetative_organs       4
     high_expressed vegetative_organs       3
     high_expressed vegetative_organs       3
     high_expressed vegetative_organs       4
     high_expressed vegetative_organs       3
     high_expressed vegetative_organs       2
     high_expressed vegetative_organs       3
     high_expressed vegetative_organs       8
     high_expressed reproductive_organs     14
     high_expressed reproductive_organs     8
     high_expressed reproductive_organs     15
     high_expressed reproductive_organs     19
     high_expressed reproductive_organs     13
     high_expressed reproductive_organs     21
     high_expressed reproductive_organs     20
     high_expressed reproductive_organs     21
     high_expressed reproductive_organs     21
     high_expressed reproductive_organs     17
     high_expressed reproductive_organs     17
     high_expressed reproductive_organs     19
    R 代码
    library(ggplot2)
    
    Data<-read.table("/Users/mashengwei/PycharmProjects/common/1.txt", head=T)
    
    p<-ggplot(data=Data, aes(x=Expression_level,y=Count))+geom_boxplot(aes(fill=Organ_type))
    
    p+ facet_wrap(~ Expression_level, scales="free")
    
    png("/Users/mashengwei/PycharmProjects/common/1.png") #保存图片
    图片展示

    boxplot

    添加坐标轴标题
    p+ facet_wrap(~ Expression_level, scales="free") + xlab(" Expression level of Triticeae-specific genes") + ylab("Count of Triticeae-specific genes")

    这里写图片描述

    展开全文
  • ggplot绘制箱线图

    2021-04-29 09:58:30
    箱线图(Box-plot)也叫箱须图,由美国科学家john.w.tukey1977年在论文中首次展示,能显示出数据的最大值、最小值,中位数及上下四分位数,因形状像箱子得名。箱线图箱线图在SCI论文中应用非常广泛。 第一四分位数...

    箱线图(Box-plot)也叫箱须图,由美国科学家john.w.tukey1977年在论文中首次展示,能显示出数据的最大值、最小值,中位数及上下四分位数,因形状像箱子得名。箱线图箱线图在SCI论文中应用非常广泛。
    在这里插入图片描述
    第一四分位数(Q1),又称较小四分位数,等于该样本中所有数值由小到大排列后第25%的数字。
    第二四分位数,又称中位数,等于该样本中所有数值由小到大排列后第50%的数字。
    第三四分位数(Q3)又称较大四分位数,等于该样本中所有数值由小到大排列后第75%的数字。
    逸出值,是根据四分位间距(interquartile range)进行计算的:
    四分位间距 = Q3-Q1 = ΔQ
    在区间 Q3+1.5ΔQ, Q1-1.5ΔQ 之外的值即被视为逸出值。
    今天我们来讲讲怎么使用R语言制作箱线图,继续使用我们的汽车销售数据,数据可以在公众号回复汽车销售即可获得数据,首先我们导入R包和数据

    library(foreign)
    library(ggplot2)
    bc <- read.spss("E:/r/test/tree_car.sav",
                    use.value.labels=F, to.data.frame=T)  
    
    

    在这里插入图片描述
    在这里插入图片描述
    我们来看下数据,car就是汽车售价,age是年龄,gender是性别,inccat是收入,这里分成4个等级,ed是教育程度,这里分为5个等级.我们处理一下数据,把分类变量转换成因子,然后加上一个标签。

    bc$ed<-factor(bc$ed,levels=c(1:5),labels=c("小学","初中","高中","大学","博士"))
    bc$inccat<-factor(bc$inccat,levels=c(1:4),labels=c("低收入","中低收入","中等收入","富裕"))
    bc$gender<-ifelse(bc$gender=="m",1,0)
    bc$gender<-factor(bc$gender,levels = c(0,1),labels=c("女性","男性"))
    
    

    然后先开始一个简单的箱线图,教育程度和买车的价格关系

    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot()###简单的箱线图
    
    

    在这里插入图片描述
    可以进一步填充颜色美化图形

    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = F)####按类别填充填充颜色
    
    

    在这里插入图片描述
    假如把notch = F改为notch = T可以做出带有凹槽的箱线图,中位数的置信区间可以由凹槽表示,加入不考虑数据分布情况,凹槽不重合,就可以认为中位数95%CI显著不同

    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = T)
    
    

    在这里插入图片描述
    我们还可以在其中加入散点,可以得出数据的分布情况

    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = F)+
      geom_jitter()###添加散点分布
    
    

    在这里插入图片描述
    进一步美化图形

    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = F)+
      geom_jitter(binaxis="y",position = position_jitter(0.3),satckdir="center",
                  dotsize=0.4)###调整美化图形
    
    

    在这里插入图片描述
    设置背景为横线或空白

    ###
    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = F)+
      geom_jitter(binaxis="y",position = position_jitter(0.3),satckdir="center",
                  dotsize=0.4)+
      theme_light()###带横线的背景
    ###
    ggplot(bc,mapping = aes(x=ed,y=car))+
      geom_boxplot(aes(fill=ed),notch = F)+
      geom_jitter(binaxis="y",position = position_jitter(0.3),satckdir="center",
                  dotsize=0.4)+
      theme_classic()###空白的背景
    
    

    在这里插入图片描述
    在SCI论文中,我们常需要比较每组的关系,并得出统计值,因此我们可以使用ggpubr增强包

    my_comparisons1 <- list( c("1", "2"), c("2", "3"), c("3", "4"),c("4","5"))
    p<-ggboxplot(bc, x = "ed", y = "car",
              color = "ed", palette = "npg", add = "jitter")
    p + stat_compare_means() ###添加P值
    p + stat_compare_means(method = "t.test")###可以更换其他方法
    
    

    在这里插入图片描述
    可以进行组别多组比较,这里注意一下,这里比较不能把类别用作因子,不然比不出来,要重新跑一下数据,数据5跑不出结果应该是本身数据的问题

    bc <- read.spss("E:/r/test/tree_car.sav",
                    use.value.labels=F, to.data.frame=T)  
    my_comparisons1 <- list( c("1", "2"), c("2", "3"), c("3", "4"),c("4","5"))
    ggboxplot(bc, x = "ed", y = "car",
              color = "ed", palette = "npg")+
      stat_compare_means(comparisons = my_comparisons1, 
                         label.y = c(70, 80, 90),method = "t.test")###添加比较
    
    

    在这里插入图片描述
    可以更改一下位置和调色,并添加一个Anova的p值

    ggboxplot(bc, x = "ed", y = "car",
              fill= "ed", palette = "npg")+
      stat_compare_means( comparisons = my_comparisons1,
                         label.y = c(70, 80, 90),method = "t.test")+
      stat_compare_means(label.y = 100)# 添加一个Anova的p值
    
    

    在这里插入图片描述
    假如我们想其他组都和一组比较,

    ggboxplot(bc, x = "ed", y = "car",
              fill= "ed", palette = "npg")+
      stat_compare_means(method = "anova", label.y = 100)+ # Add global p-value
      stat_compare_means(aes(label = ..p.signif..),
                         method = "t.test", ref.group = "1")
    
    

    这里要对*解释一下,结果表明每组和一组比较都是有意义的
    • ns: p > 0.05
    • *: p <= 0.05
    • **: p <= 0.01
    • ***: p <= 0.001
    • ****: p <= 0.0001
    在这里插入图片描述
    假设我们想知道不同性别的买车和教育程度情况

    ggboxplot(bc, x = "ed", y = "car",
                 color = "ed", palette = "npg", add = "jitter",
                 facet.by = "gender", short.panel.labs = FALSE)
    
    

    在这里插入图片描述
    还可以加上统计值

    ggboxplot(bc, x = "ed", y = "car",
              color = "ed", palette = "npg", add = "jitter",
              facet.by = "gender", short.panel.labs = FALSE)+
      stat_compare_means(
    aes(label = paste0("p = ", ..p.format..)))
    
    

    在这里插入图片描述
    更多精彩文章请关注公众号:零基础说科研
    在这里插入图片描述

    展开全文
  • ggplot2箱线图+小提琴图

    千次阅读 2020-09-17 14:38:06
    箱线图 1槽口 1.在geom_boxplot()括号中加入notch=TRUE即可在箱子上生成槽口,即 geom_boxplot(notch=TRUE,notchwidth=0.8)#notchwidth越小则越往里凹 ...想要使ggplot2所绘制的箱线图带有最大最小值线,可用stat_b
  • ggplot2分组箱线图添加均值一、不分组的简单箱线图加均值stat_summary分组箱线图 一、不分组的简单箱线图加均值 代码如下(示例): # Library library(ggplot2) # create data names=c(rep("A", 20) , rep("B", 8)...
  • ggplot箱线图

    千次阅读 2018-07-22 14:07:17
    ggplot(data=Salaries,aes(x=rank,y=salary,fill=sex))+geom_boxplot() +scale_x_discrete(breaks=c("AsstProf","AssocProf","Prof"), labels=c("Assistant\nProfessor"...
  • ggplot2绘制箱线图

    千次阅读 2019-07-09 23:31:46
    利用R中的ggplot2包生成优雅的箱线图,必备技能get!
  • 上一节我们已经简单已介绍了箱线图原理和单个数据的箱线图表示,今天我们来介绍多数据的箱线图和一些其他扩展,继续使用我们原来的汽车销售数据,我们先把数据和R包导入, library(foreign) library(ggplot2) bc <...
  • 用R中ggplot2包做箱线图、折线图、条形图使用ggplot2完成画图工作箱线图折线图条形图 使用ggplot2完成画图工作 下载R软件和RStudio,为了书写方便在RStudio(类似于Matlab)中写代码。 下载ggplot2包:install....
  • ggplot2中做箱线图及其上下线

    千次阅读 2020-07-06 21:03:24
    ggplot2中做箱线图及其上下线 使用ggplot2制作箱线图 首先,我们加载ggplot2的包,然后使用geom_boxplot函数画箱线图。 library(ggplot2) p = ggplot(data=train.data.raw) p+geom_boxplot(aes(x=Revenue,y=...
  • ggplot2绘制箱线图叠加散点图和连线 准备输入文件 这里提供示例输入文件样式: sample percent group Cancer 0.10991479 1 Cancer 0.196776537 2 Cancer 0.163551093 3 Cancer 0.089305767 4 Cancer 0.629499967 5 ...
  • ggplot2绘制线形图的时候,异常值是黑点,设置outlier.fill并不能奏效。 library(tidyverse) x1 <- rlnorm(200) x2 <- rlnorm(300) df1 <- data.frame(type = 'A', value = x1) df2 <- data.frame(type...
  • ggplot 2箱线图(二)

    千次阅读 2019-06-18 17:40:59
    箱线图之分面 1.数据整理格式如下: qplot(pH, contents, fill=type, data=Lin1, geom=c(“boxplot”)) abc <- qplot(pH, contents, fill=type, data=Lin1, geom=c(“boxplot”)) abc + facet_grid(type ~.)...
  • library(ggplot2) n <- 1000 df <- data.frame(var1=sample(LETTERS[1:3],n, T), var2=sample(LETTERS[1:2],n,T), var3=sample(LETTERS[1:3],n,T), y=rnorm(n)) p1 <- ggplot(df, aes(x=var1, y=y)) +
  • 继续“一图胜千言”系列,箱线图通过绘制观测数据的五数总括,即...本文利用R语言的ggplot2包,从头带您绘制各式各样的箱线图。一 绘制基本的箱线图载入数据及函数包library(ggplot2) library(RColorBrewer)dos...
  • 数据可视化——R语言ggplot2包绘制箱线图叠加散点图 概述: 当每个组的数据点相对较少时,又需要显示出各组数据的分布情况时,可以采用箱线图叠加散点图的方式来表达数据。 使用工具:R语言中的ggplot2工具包 箱线图...
  • 箱线图是什么? 箱线图(boxplot),又称箱形图或盒式图,不仅可以展示不同类别数据的平均水平差异,还能展示数据间的极值、离散程度、异常值等信息 箱子的中间线,是数据的中位数,反映了数据的平均水平 箱子的上...
  • R语言绘制箱线图箱线图(又称盒须图)是常见的统计图形之一,通过绘制连续型变量的五数总括,即最小值、下四分位数(第25百分位数)、中位数(第50百分位数)、上四分位数(第75百分位数)以及最大值,描述了连续型变量的...
  • ggplot2 分组线图图绘制方法

    万次阅读 2019-05-22 20:41:30
    这里使用R语言的data.table和ggplot2 library(ggplot2) library(data.table) 2. 生成模拟数据 生成示例数据 library(data.table) library(ggplot2) dat <- data.table(Spring = c(runif(9,0,1),2), Summe...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,833
精华内容 733
关键字:

ggplot2箱线图