R ggplot: Как создать точечный график с полевыми рамками - PullRequest
0 голосов
/ 13 декабря 2018

Мои данные выглядят следующим образом:

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

Я хотел бы создать блок-график совместного распределения a1c и att (скажем, a1c по оси x и att по оси y) и иметьточки в коробочках, закрашенные status в 3-й колонке.Скажем, регистр будет красным и контролирует синие точки.

Пока я пробовал это:

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 голосов
/ 13 декабря 2018

Существует более чем способ создания точечных диаграмм с маргинальными коробочными диаграммами.Я знаю как минимум 2: один с ggplot и ggExtra, а другой с пакетом 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

...