Zeke
Zeke

Reputation: 89

R: How to plot multiple boxplots, each from a single column in a dataset, on the same ggplot?

I have the following data table of this structure:

+-----+-------+-------+-------+
| key | col1  | col2  | col3  |
+-----+-------+-------+-------+
| A   | 1000  | 56    | 1     |
| A   | 2000  | 3     | NaN   |
| B   | 2001  | 23    | 90    |
| A   | 2002  | 87    | 42    |
| A   | 2004  | 12    | 12    |
| B   | 2002  | 1     | NaN   |
| C   | 2002  | 3     | 14    |
+-----+-------+-------+-------+

My objective is to plot 1 ggplot of multiple boxplots for each key, where each boxplot in the ggplot is the visualization of every column in the dataset. Is there anyway to achieve this?

Upvotes: 1

Views: 690

Answers (1)

Mateusz1981
Mateusz1981

Reputation: 1867

As far as I understood

 df <- structure(list(key = structure(c(1L, 1L, 2L, 1L, 1L, 2L, 3L), .Label = c("A", 
    "B", "C"), class = "factor"), col1 = c(1000L, 2000L, 2001L, 2002L, 
    2004L, 2002L, 2002L), col2 = c(56L, 3L, 23L, 87L, 12L, 1L, 3L
    ), col3 = c(1, NaN, 90, 42, 12, NaN, 14)), .Names = c("key", 
    "col1", "col2", "col3"), class = "data.frame", row.names = c(NA, 
    -7L))

library(reshape2)
df1 <- melt(df)

library(ggplot2)
ggplot(aes(x = variable, y = value), data = df1) + geom_boxplot() + facet_wrap(~key)

enter image description here

or

ggplot(aes(x = variable, y = value), data = df1) + geom_boxplot() + facet_wrap(variable~key)

enter image description here

Upvotes: 2

Related Questions