精华内容
下载资源
问答
  • library(ggplot2)library(plyr)ggplot(dfmelt, aes(x=factor(round_any(x,0.5)), y=value,fill=variable))+geom_boxplot()+facet_grid(.~variable)+labs(x="X (binned)")+theme(axis.text.x=ele...

    不完全确定你在寻找什么 . 这很接近吗?

    library(ggplot2)

    library(plyr)

    ggplot(dfmelt, aes(x=factor(round_any(x,0.5)), y=value,fill=variable))+

    geom_boxplot()+

    facet_grid(.~variable)+

    labs(x="X (binned)")+

    theme(axis.text.x=element_text(angle=-90, vjust=0.4,hjust=1))

    EDIT (对OP评论的回应)

    你可以通过取出 facet_grid(...) 来调用每个箱子中的Y彼此相邻,但我不推荐它 .

    ggplot(dfmelt, aes(x=factor(round_any(x,0.5)), y=value, fill=variable))+

    geom_boxplot()+

    labs(x="X (binned)")+

    theme(axis.text.x=element_text(angle=-90, vjust=0.4,hjust=1))

    如果你必须这样做,使用方面仍然更清晰:

    dfmelt$bin

    ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+

    geom_boxplot()+

    facet_grid(.~bin, scales="free")+

    labs(x="X (binned)")+

    theme(axis.text.x=element_blank())

    请注意, bin 列添加到 dfmelt . 这是因为在 facet_grid(...) 公式中使用 factor(round_any(x,0.5)) 不起作用 .

    展开全文
  • 图中标示了箱线图中每条线和点表示含义,其中应用到了分位数概念 线主要包含五数据节点,将一组数据从大到小排列,分别计算出他上边缘(Maximum),上四分位数(Q3),中位数(Median),下四分位数(Q1),下边缘...

    图中标示了箱线图中每条线和点表示的含义,其中应用到了分位数的概念 线的主要包含五个数据节点,将一组数据从大到小排列,分别计算出他的上边缘(Maximum),上四分位数(Q3),中位数(Median),下四分位数(Q1),下边缘(Minimum) 不在上边缘与下边缘的范围内的为异常值,用点表示。

    数据准备

    data

    Repeat = rep(paste("Repeat", 1:3, sep = "_"), 100),

    Condition = rep(c("Control", "Test"), 150))

    > head(data)

    Value Repeat Condition

    1 -1.1395507 Repeat_1 Control

    2 0.7319707 Repeat_2 Test

    3 -0.2219461 Repeat_3 Control

    4 -1.1454664 Repeat_1 Test

    5 1.0740937 Repeat_2 Control

    6 0.3741845 Repeat_3 Test

    boxplot函数(R自带)

    最方便的方法就是用boxplot函数,不需要依赖任何包

    boxplot(data$Value, ylab="Value")

    根据不同的条件,加上颜色

    boxplot(Value ~ Condition, data=data, ylab="Value", col=c("darkred", "darkgreen"))

    boxplot(Value ~ Condition * Repeat, data=data, ylab="Value", col="darkgreen")

    多个分组(condition和repeat)的箱线图

    boxplot(Value ~ Condition + Repeat, data=data, ylab="Value", col="darkgreen")

    ggplot2

    使用ggplot2来画箱线图是现在常用的方法

    library(tidyverse)

    # 定义一种主题,方便后面重复使用

    theme_boxplot

    axis.line=element_line(colour="black",size=0.25),

    axis.title=element_text(size=13,face="plain",color="black"),

    axis.text = element_text(size=12,face="plain",color="black"),

    legend.position="none"

    # ggplot2画图

    ggplot(data, aes(Condition, Value)) +

    geom_boxplot(aes(fill = Condition), notch = FALSE) +

    scale_fill_brewer(palette = "Set2") +

    theme_classic() + theme_boxplot

    添加抖动散点

    ggplot(data, aes(Condition, Value)) +

    geom_boxplot(aes(fill = Condition), notch = FALSE) +

    geom_jitter(binaxis = "y", position = position_jitter(0.2), stackdir = "center", dotsize = 0.4) +

    scale_fill_brewer(palette = "Set2") +

    theme_classic() + theme_boxplot

    带凹槽(notched)的箱线图,中位数的置信区用凹槽表示

    ggplot(data, aes(Condition, Value)) +

    geom_boxplot(aes(fill = Condition), notch = TRUE, varwidth = TRUE) +

    geom_jitter(binaxis = "y", position = position_jitter(0.2), stackdir = "center", dotsize = 0.4) +

    scale_fill_brewer(palette = "Set2") +

    theme_classic() + theme_boxplot

    比较流行的小提琴图,内嵌箱线图和扰动散点

    ggplot(data, aes(Condition, Value)) +

    geom_violin(aes(fill = Condition), trim = FALSE) +

    geom_boxplot(width = 0.2) +

    geom_jitter(binaxis = "y", position = position_jitter(0.2), stackdir = "center", dotsize = 0.4) +

    scale_fill_brewer(palette = "Set2") +

    theme_classic() + theme_boxplot

    云雨图,它是密度分布图、箱线图、散点图的集合,完美的展示了所有数据信息

    library(grid)

    # GeomFlatViolin函数的定义见https://github.com/EasyChart/Beautiful-Visualization-with-R

    ggplot(data, aes(Condition, Value, fill=Condition)) +

    geom_flat_violin(aes(fill = Condition), position = position_nudge(x=.25), color="black") +

    geom_jitter(aes(color = Condition), width=0.1) +

    geom_boxplot(width=.1, position=position_nudge(x=0.25), fill="white",size=0.5) +

    scale_fill_brewer(palette = "Set2") +

    coord_flip() + theme_bw() + theme_boxplot

    分组画箱线图

    根据不同的Condition和Repeat对数据分组画图

    ggplot(data, aes(Repeat, Value)) +

    geom_boxplot(aes(fill = Condition), notch = FALSE, size = 0.4) +

    scale_fill_brewer(palette = "Set2") +

    guides(fill=guide_legend(title="Repeat")) +

    theme_bw()

    同样的,我们可以对箱线图添加抖动点,但是分组之后,并不能直接添加抖动点,需要增加两列信息来辅助画抖动点

    # 增加dist_cat和scat_adj ,用于画抖动点

    data % mutate(dist_cat = as.numeric(Repeat),

    scat_adj = ifelse(Condition == "Control", -0.2, 0.2))

    # 增加之后的数据如下

    > head(data)

    Value Repeat Condition dist_cat scat_adj

    1 -1.1395507 Repeat_1 Control 1 -0.2

    2 0.7319707 Repeat_2 Test 2 0.2

    3 -0.2219461 Repeat_3 Control 3 -0.2

    4 -1.1454664 Repeat_1 Test 1 0.2

    5 1.0740937 Repeat_2 Control 2 -0.2

    6 0.3741845 Repeat_3 Test 3 0.2

    ggplot(data, aes(Repeat, Value)) +

    geom_boxplot(aes(fill = Condition), notch = FALSE, size = 0.4) +

    geom_jitter(aes(scat_adj+dist_cat, Value, fill = factor(Condition)),

    position=position_jitter(width=0.1,height=0),

    alpha=1,

    shape=21, size = 1.2) +

    scale_fill_brewer(palette = "Set2") +

    guides(fill=guide_legend(title="Condition ")) +

    theme_bw()

    小提琴图本来是由两个左右对称的密度估计曲线构成,那么对数据分组之后,我们可以只保留两个小提琴图的各一半,这样更能直接的观察出两组之间的差异!

    # ggplot2并未提供这样的功能,这里定义了geom_split_violin函数来实现

    # geom_split_violin 的定义见 https://github.com/EasyChart/Beautiful-Visualization-with-R

    ggplot(data, aes(x = Repeat, y = Value, fill=Condition)) +

    geom_split_violin(draw_quantiles = 0.5, trim = FALSE) +

    geom_jitter(aes(scat_adj+dist_cat, Value, fill = factor(Condition)),

    position=position_jitter(width=0.1,height=0),

    alpha=1,

    shape=21, size = 1.2) +

    scale_fill_brewer(palette = "Set2") +

    guides(fill=guide_legend(title="Condition ")) +

    theme_bw()

    ggpubr (带显著性的箱线图)

    生成数据

    # 均值为3,标准差为1的正态分布

    c1

    # Johnson分布的偏斜度2.2和峰度13

    c2

    # Johnson分布的偏斜度0和峰度20

    c3

    data

    Conditon = rep(c("C_1", "C_2", "C_3"), each = 100),

    Value = c(c1, c2, c3)

    )

    #数据如下

    > head(data)

    Conditon Value

    1 C_1 2.679169

    2 C_1 1.699026

    3 C_1 5.459568

    4 C_1 3.778365

    5 C_1 3.689881

    6 C_1 1.295534

    ggpubr的功能多样,这里只举箱线图的例子

    library(ggpubr)

    library(RColorBrewer)

    # 定义需要两两比较的组

    compaired

    c("C_2", "C_3"),

    c("C_1", "C_3"))

    palette

    # wilcox.test

    ggboxplot(data, x = "Conditon", y = "Value",

    fill = "Conditon", palette = palette,

    add = "jitter", size=0.5) +

    stat_compare_means(comparisons = compaired, method = "wilcox.test") + # 添加每两组变量的显著性

    theme_classic() + theme_boxplot

    使用ggplot2的语法添加显著性检验,将wilcox.test 换成t.test

    # t.test

    ggplot(data, aes(Conditon, Value))+

    geom_boxplot(aes(fill = Conditon), notch = FALSE, outlier.alpha = 1) +

    scale_fill_brewer(palette = "Set2") +

    geom_signif(comparisons = compaired,

    step_increase = 0.1,

    map_signif_level = F,

    test = t.test) +

    theme_classic() + theme_boxplot

    欢迎关注公众号:"生物信息学"

    展开全文
  • 参考自《R Graphics Cookbook》箱线图:箱子和线组合;语法:geom_boxplot()。箱线图的箱子长度代表前25%分位到75%分位数据...如果不超过这距离,最远点是多少就画线段,若有极端值超过,则画1.5倍...

    参考自《R Graphics Cookbook》

    箱线图:箱子和线的组合;语法:geom_boxplot()。

    箱线图的箱子长度代表前25%分位到75%分位的数据分布(四分之一分位数到四分之三分位数),箱子中的横线为中位数;

    箱子外的线段(箱子的虚)表示两端数据的范围,最大不能超过1.5倍的四分之一分位数到四分之三分位数的距离;

    如果不超过这个距离,最远点是多少就画多长的线段,若有极端值超过,则画1.5倍距离的线段和离群点。

    library(ggplot2)

    library(MASS)

    #映射离散变量给x(此处直接变量转化因子变量),映射连续变量给y

    ggplot(birthwt, aes(x = factor(race), y = bwt)) +

    geom_boxplot()

    592f198726795c8ed0931c13da729cf9.png

    #改变箱线图宽度,默认大概是0.8

    ggplot(birthwt, aes(x = factor(race), y = bwt)) +

    geom_boxplot(width = .5)

    785c2c05f3698167678df2b5bc8f60b0.png

    #改变箱线图离群点的样式,默认size是1,shape是16

    ggplot(birthwt, aes(x = factor(race), y = bwt)) +

    geom_boxplot(outlier.size = 1.5, outlier.shape = 21)

    2e8f084b4d24b440850595d7e5f5c1f6.png

    #若要生成单个箱线图,则需要给x映射一个任意常数, 然后去除x轴刻度和轴标签(一般不会生成单个箱线图)

    #但表明在ggplot中映射给x一个常数,是可行的

    ggplot(birthwt, aes(x = 1, y = bwt)) +

    geom_boxplot() +

    scale_x_continuous(breaks = NULL) +

    theme(axis.title.x = element_blank( ) )

    154c8cc79a96e19b69c6dbbb351b6830.png
    展开全文
  • 学习R语言ggplot2包画箱线图。 对应 Nature Communications 论文是 Fecal pollution can explain antibiotic resistance gene abundances in anthropogenically impacted environments这篇论文数...

    今天继续 跟着Nature Communications学画图系列第三篇。学习R语言ggplot2包画箱线图。

    对应的 Nature Communications 的论文是 Fecal pollution can explain antibiotic resistance gene abundances in anthropogenically impacted environments

    这篇论文数据分析和可视化的部分用到的数据和代码全部放到了github上 https://github.com/karkman/crassphage_project

    非常好的R语言学习素材。

    论文中的figure1是使用基础绘图函数画的,我感觉如果使用ggplot2实现起来可能会更容易。今天就先用ggplot2试着画一下箱线图。

    首先是读入数据

    HMP<-read.table("data/HMP.txt")
    dim(HMP)
    head(HMP)
    

    数据中有缺失值,将缺失值去掉

    HMP<-na.omit(HMP)
    

    最基本的箱线图

    library(ggplot2)
    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot()
    

    ff7a35420b65170b89e7a928ac3876bd.png

    填充颜色

    cols <- c("#E69F00", "#56B4E9", "#009E73")
    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot(aes(fill=country))+
      scale_fill_manual(values = cols)
    

    bfc802d980364429b5daf0714fe214a4.png

    去掉图例、灰色背景等

    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot(aes(fill=country),show.legend = F)+
      scale_fill_manual(values = cols)+
      theme(panel.background = element_blank(),
            axis.title = element_blank(),
            axis.text.y = element_blank(),
            axis.ticks.y = element_blank())
    

    df33b0eed368a234507b18729ee67114.png

    用注释的办法添加一条坐标轴

    这里参考了 https://stackoverflow.com/questions/33699650/how-can-i-control-the-lengths-of-the-axis-lines-in-ggplot

    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot(aes(fill=country),show.legend = F)+
      scale_fill_manual(values = cols)+
      theme(panel.background = element_blank(),
            axis.title = element_blank(),
            axis.text.y = element_blank(),
            axis.ticks.y = element_blank())+
      annotate(geom="segment",x=1,xend=3,y=-4,yend=-4)+
      scale_y_continuous(expand = c(0,0))
    

    e9fdadf29c1da0769455c9f74126afdc.png

    添加误差线

    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot(aes(fill=country),show.legend = F)+
      scale_fill_manual(values = cols)+
      theme(panel.background = element_blank(),
            axis.title = element_blank(),
            axis.text.y = element_blank(),
            axis.ticks.y = element_blank())+
      annotate(geom="segment",x=1,xend=3,y=-4,yend=-4)+
      scale_y_continuous(expand = c(0,0))+
      stat_boxplot(geom = "errorbar", aes(ymin = ..ymax..),width=0.2)+
      stat_boxplot(geom = "errorbar", aes(ymax = ..ymin..),width=0.2)
    

    3fabb14b02a8a928bda187e69d81a17b.png

    翻转、更改刻度的长度

    ggplot(HMP,aes(x=country,y=log10(rel_crAss)))+
      geom_boxplot(aes(fill=country),show.legend = F)+
      scale_fill_manual(values = cols)+
      theme(panel.background = element_blank(),
            axis.title = element_blank(),
            axis.text.x = element_blank(),
            axis.ticks.x = element_blank(),
            axis.ticks.length.y = unit(0.3,'cm'))+
      annotate(geom="segment",x=1,xend=3,y=-4,yend=-4)+
      scale_y_continuous(expand = c(0,0))+
      stat_boxplot(geom = "errorbar", aes(ymin = ..ymax..),width=0.2)+
      stat_boxplot(geom = "errorbar", aes(ymax = ..ymin..),width=0.2)+
      coord_flip()
    

    6321f150aae14303137817b63e4f4277.png

    文末总结

    要做到和原图一样的话ggplot2使用的代码偏多了。相对来说基础绘图函数代码更简单。但是使用ggplot2话后续的美化可能会更加方便。

    欢迎大家关注我的公众号 小明的数据分析笔记本

    展开全文
  • 审稿:张耀文1、问题与数据某研究者想了解不同性别、受教育程度人群中幸福指数分布特征。其中,受教育程度(Education)分为3类(高中及以下、大学本科和硕士研究生及以上),性别(Gender)分为2类(男性和女性)。幸福...
  • 展开全部箱线图(Boxplot)也称箱须图e69da5e6ba9062616964757a686964616f31333337613165(Box-whisker Plot),是利用数据中统计量:最小值、第一四分位数、中位数、第三四分位数与最大值来描述数据一种方法,...
  • The data looks like this: require (ggplot2) require (plyr) library(reshape2) set.seed(1234) x y.1 y.2 y.3 y.4 df which I then melted dfmelt The facet_wrap as shown in this solution ( Multiple plots ...
  • ↑↑↑点击上方蓝字,关注极客猴如果你喜欢极客猴,可以把我置顶或星标...常见数据可视化库有:matplotlib 是最常见2维库,可以算作可视化必备技能库,由于matplotlib是比较底层库,api很,代码学起来不太...
  • Y:简单创建一显示一变量的值分布的箱线图。工作表必须至少包括一列数字或日期/时间数据。例如,在下面的工作表中,高度包含数字数据。图形显示高度的分布。一 Y:含组创建一显示不同组的值分布的箱...
  • 废话不说,先上图:此图⽐普通均值折线图代表了更多的信息。下⾯我就⼀步⼀步展示怎样得到这样 boxplot 和中位数折线图。主要⽤到2 R 包 latex2exp 和 ggplot2. ggplot2是画图主⻆,latex2exp可以让 ...
  • 本节书摘来自异步社区《R数据可视化手册》一书中第2章,第2.5节,作者 【美】...方法使用plot()函数绘制箱线图(见图2-10)时向其传递两向量:x和y。当x为因子型变量(与数值型变量对应)时,它会默认绘制箱线...
  • 本节书摘来异步社区《R数据可视化手册》一书中第2章,第2.5节,作者:【美】...方法使用plot()函数绘制箱线图(见图2-10)时向其传递两向量:x和y。当x为因子型变量(与数值型变量对应)时,它会默认绘制箱线...
  • 条形图R语言使用函数barplot()创建条形图。barplot(H, xlab, ylab, main, names.arg, col)H是包含在条形图中使用数值向量或矩阵。...若使用多个颜色或names,则使用向量赋值。另外,超过两个变量表示为用于...
  • 文章目录pandas中绘图函数内容概要线形图柱状图直方图随机百分比密度图散布图机器学习使用比较多的一种图形散布图可以描述数据分布状态和数据增长趋势以及x和y关系汽车排放量越小,行驶距离就越远 ...
  • 绘制变量分布图 ... 先绘制两变量分布图,其中X变量为分类变量,Y为数值变量。 1 import pandas as pd 2 import numpy as np 3 import seaborn as sns 4 import matplotlib.pyplot as plt ...
  • 1. 箱线图 像柱状图,但不是柱状图。 2. 雷达图 像饼状图,但不是饼状图。 3. 散点图 表示因变量(Y轴数值)随自变量(X轴数值)变化大致趋势,用合适函数对数据点进行拟合; 散点图中包含数据越...
  • Matplotlib可视化

    2019-01-27 16:57:10
    创建图与图表是很分析项目中...它可以创建常用统计图,包括条形图、箱线图、折线图、散点图和直方图等等图形。 matplotlib提供了对图形各个部分进行定制功能。例如,它可以设置图形形状和大小、x轴与y...
  • R语言经典实例(中+英)

    热门讨论 2014-12-03 18:46:15
     10.12 绘制过点x和y的线 251  10.13 改变线的类型、宽度或者颜色 253  10.14 绘制多个数据集 254  10.15 添加垂直线和水平线 256  10.16 创建箱线图 257  10.17 对每个因子水平创建箱线图 258  10.18 创建...
  • lattice继承了R语言糟糕特征,就是参数设置铺天盖地,足以让人窒息,光是一份xyplot()函数帮助文档,恐怕就够我们消磨一天时间了,更重要是,lattice仍然面向特定统计图形,像基础图形系统一样,有直方...

空空如也

空空如也

1
收藏数 20
精华内容 8
关键字:

多个y的箱线图