Mam zbiór zestawu punktów (od 0 do 100) na różnych wymiarach (A, B, C, D). Korzystanie z następującego kodu:

dat=stack(dat)
dat$ind <- factor(dat$ind,levels=rev(unique(dat$ind)))
ggplot(dat, aes(values,ind)) + 
geom_boxplot() + 
xlab("Dimension Score") + 
ylab ("Dimension")

Tworzę fabułę, która wygląda tak:

Boxplot

Teraz muszę podświetlić określone zakresy dla każdego wymiarów:

A: 45 to 60
B: 70 to 85
C: 40 to 55
D: 35 to 50

Jak mam to zrobic? Z góry dziękuję za Twoją pomoc.

2
Clark 20 październik 2020, 23:20

1 odpowiedź

Najlepsza odpowiedź

Użyj geom_rect, np. poniżej. ymin i ymax czynnika odpowiadają ich odwzorowaniu do liczb całkowitych. To powinno się rozpocząć.

library(ggplot2)

values <- c(
  runif(100,0,100),
  rgamma(100,10,1),
  rnorm(100,50,30),
  rnorm(100,70,10)
  )

ind <- rep(c("A","B","C","D"),each = 100)
dat <- data.frame(values,ind)

rects <- data.frame(
  start = c(45,70,40,35),
  end = c(60,85,55,50),
  ymin = c(0.5,1.5,2.5,3.5),
  ymax = c(1.5,2.5,3.5,4.5),
  group = as.factor(c("A","B","C","D"))
)

dat$ind <- factor(dat$ind,levels=rev(unique(dat$ind)))
ggplot(data = dat) + 
  geom_boxplot(mapping = aes(values,ind)) + 
  xlab("Dimension Score") + 
  ylab ("Dimension") +
  geom_rect(data=rects, inherit.aes=FALSE, aes(xmin=start, 
                                               xmax=end, 
                                               ymin=ymin,
                                               ymax=ymax, 
                                               group=group,
                                               fill=group), 
            color="transparent", , alpha=0.3)

enter image description here

Twoje zdrowie

1
Matthew Skiffington 21 październik 2020, 01:24