Reputation: 59
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
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)
Upvotes: 1