R ggplot:如何使用边际箱形图创建散点图

时间:2018-12-13 17:19:42

标签: r ggplot2 dplyr scatter-plot boxplot

我的数据如下:

d1 <- read.table(header = TRUE, text =                   
                   "a1c   att  status
                 8.500000 23.58333  case
                 8.450000 12.25000 control
                 8.266667 18.91667 control")

a1c   att  status
1  8.500000 23.58333  case
2  8.450000 12.25000 control
12 8.266667 18.91667 control

我想制作a1catt的联合分布的箱形图(例如在x轴上为a1c,在y轴上为att),并在箱图中用status上色的点第三列。假设情况是红色的情节并控制了蓝色的点。

到目前为止,我已经尝试过:

ggplot(data = d1, aes(x = a1c, y = att, group=status)) +     
 geom_boxplot(colour = d1$status) + geom_jitter(position = position_jitter(
 width = .1, height=0))

我收到以下警告:

  

此外:警告消息:1:删除了68行,其中缺少行   值(stat_boxplot)。 2:删除了包含非限定值的5行   (stat_boxplot)。

谢谢

1 个答案:

答案 0 :(得分:0)

使用边际箱线图创建散点图的方法不止一种。我至少知道2个:一个带有ggplotggExtra,另一个带有包car

您的数据:

d1 <- read.table(header = TRUE, text =
    "a1c   att  status
    8.500000 23.58333  case
    8.450000 12.25000 control
    8.266667 18.91667 control")

ggplot和ggExtra

如果您想使用ggplot,我相信您需要ggExtra才能完成这项工作。以下代码可以解决问题

# load the packages
library(ggplot2)
library(ggExtra)

# make a usual ggplot and store it
# point size increased, legend to the bottom
p1 <- ggplot(d1, aes(x=a1c, y=att , color=status)) +
  geom_point(size=2.5) +
  theme(legend.position="bottom")

# marginal boxplot
# relative size of the central plot increased
ggMarginal(p1, type="boxplot", size=7)

这将导致显示此图(当然,您可能会玩弄主题等):

enter image description here

替代:汽车包装

library(car)
scatterplot(d1$a1c ~ d1$att | d1$status, 
            boxplots = "xy", regLine=FALSE, fill=d1$status, cex=2)

结果如下图所示:

enter image description here