简体   繁体   中英

single instead multiple boxplots with ggplot

I would like to make a boxplot for a variable (Theta..vol..) depending on two factors (Tiefe) and (Ort).

 > str(data) 
  'data.frame': 30 obs. of  6 variables:  
 $ Nummer      : int   > 1 2 3 4 5 6 7 8 9 10 ... 
 $ Name        : int  11 12 13 14 15 16 17 18 19 20 ...
 $ Ort         : Factor w/ 2 levels "NNW","S": 2 2 2 2 2 2 2 2 2 2 ...
 $ Tiefe       : int  20 20 20 20 20 50 50 50 50 50 ... 
 $ Gerät       : int  2 2 2 2 2 2 2 2 2 2 ...  
 $ Theta..vol..: num  15 16.4 14.9 16.6 10.6 22.1 17.6 10 18 20.3 ...

My code is:

ggplot(data, aes(x = Tiefe, y = Theta..vol.., fill=Ort))+geom_boxplot()

Since the variable(Tiefe) has 3 levels and the variable (Ort) has 2 levels I wish to see three paired boxplots (each pair for a single (Tiefe). But I see just a single pair (one boxplot for one level of "Ort" and another boxplot for the second level of the "Ort" What should I change to get three pairs for each "Tiefe"? Thank you

In your code, Tiefe is being read as an integer not a factor.

Easy fix using dplyr with ggplot2 :

First I made some dummy data:

library(dplyr)

data <- tibble(
      Ort = ifelse(runif(30) > 0.5, "NNW", "S"),
      Tiefe = rep(c(20, 50, 75), times = 10),
      Theta..vol.. = rnorm(30,15))

Next, we modify the Tiefe column before piping into the ggplot :

data %>% 
  mutate(Tiefe = factor(Tiefe)) %>%
  ggplot(aes(x = Tiefe, y = Theta..vol.., fill = Ort)) + 
  geom_boxplot()

ggplot

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM