Ariya Woodard
Ariya Woodard

Reputation: 59

change ggplot multiple variables display

I have a question related to ggplot vriables order display. The final ggplot shows that the plot order is like "P_1, P_105, P_196, P_238, P_31, , P_322, P_43, P_53, P_67, P_77 P_9". I want to the plot order like "P_1, P_9, P_31, P_43, P_53, P_67, P_77, P_238, P_105, P_196, P_238, P_322". can anyone hlep?

data = data.frame(P_1 = sample(1:100, 100, replace=TRUE),
                  P_9 = sample(1:100, 100, replace=TRUE),
                  P_31 = sample(1:100, 100, replace=TRUE),
                  P_43 = sample(1:100, 100, replace=TRUE),
                  PM_43 = sample(1:100, 100, replace=TRUE),
                  P_53 = sample(1:100, 100, replace=TRUE),
                  PM_53 = sample(1:100, 100, replace=TRUE),
                  P_67 = sample(1:100, 100, replace=TRUE),
                  P_77 = sample(1:100, 100, replace=TRUE),
                  P_105 = sample(1:100, 100, replace=TRUE),
                  P_196 = sample(1:100, 100, replace=TRUE),
                  P_238 = sample(1:100, 100, replace=TRUE),
                  PM_238 = sample(1:100, 100, replace=TRUE),
                  PM_322 = sample(1:100, 100, replace=TRUE),
                  P_322 = sample(1:100, 100, replace=TRUE))

data <- data %>% select(-contains("PM_"))
hist_data <- data %>% gather(var, value, P_1:P_322)
ggplot(data = hist_data, aes(value)) + geom_histogram(aes(x=value)) + facet_wrap(~var, scales = "free", ncol = 5)

Upvotes: 0

Views: 32

Answers (1)

Duck
Duck

Reputation: 39595

Try this. It is an issue about the labels. Based on your question you want the same order as the original data. It can be adjusted with next code:

library(tidyverse)
data = data.frame(P_1 = sample(1:100, 100, replace=TRUE),
                  P_9 = sample(1:100, 100, replace=TRUE),
                  P_31 = sample(1:100, 100, replace=TRUE),
                  P_43 = sample(1:100, 100, replace=TRUE),
                  PM_43 = sample(1:100, 100, replace=TRUE),
                  P_53 = sample(1:100, 100, replace=TRUE),
                  PM_53 = sample(1:100, 100, replace=TRUE),
                  P_67 = sample(1:100, 100, replace=TRUE),
                  P_77 = sample(1:100, 100, replace=TRUE),
                  P_105 = sample(1:100, 100, replace=TRUE),
                  P_196 = sample(1:100, 100, replace=TRUE),
                  P_238 = sample(1:100, 100, replace=TRUE),
                  PM_238 = sample(1:100, 100, replace=TRUE),
                  PM_322 = sample(1:100, 100, replace=TRUE),
                  P_322 = sample(1:100, 100, replace=TRUE))

data <- data %>% select(-contains("PM_"))
hist_data <- data %>% gather(var, value, P_1:P_322)
#Format variable
hist_data$var <- factor(hist_data$var,levels = names(data),ordered = T)
ggplot(data = hist_data, aes(value)) + geom_histogram(aes(x=value)) + facet_wrap(~var, scales = "free", ncol = 5)

enter image description here

Upvotes: 1

Related Questions