Упорядочение буквенно-цифровых переменных для построения - PullRequest
0 голосов
/ 26 июня 2018

Как заказать набор имен переменных вдоль оси x, которые содержат буквы и цифры? Таким образом, они взяты из опроса, где переменные отформатированы как var1, ниже. Но при построении они появляются out_1, out_10, out_11 ...

Но то, что я хотел бы, чтобы это было построено out_1, out_2 ...

library(tidyverse)
var1<-rep(paste0('out','_', seq(1,12,1)), 100)
var2<-rnorm(n=length(var1) ,mean=2)
df<-data.frame(var1, var2)
ggplot(df, aes(x=var1, y=var2))+geom_boxplot()

Я пробовал это:

df %>% 
separate(var1, into=c('A', 'B'), sep='_') %>% 
arrange(B) %>%  
ggplot(., aes(x=B, y=var2))+geom_boxplot()

1 Ответ

0 голосов
/ 26 июня 2018

Вы можете заказать уровни var1 перед построением графика:

levels(df$var1) <- unique(df$var1)
ggplot(df, aes(var1,var2)) + geom_boxplot()

Или вы можете указать порядок в опциях шкалы ggplot:

ggplot(df, aes(var1,var2)) +
  geom_boxplot() +
  scale_x_discrete(labels = unique(df$var1))

Оба случая дадут одинаковый результат:

enter image description here

Вы также можете использовать его для персонализированных ярлыков; нет необходимости создавать новую переменную:

ggplot(df, aes(var1, var2)) +
  geom_boxplot() +
  scale_x_discrete('output', labels = gsub('out_', '', unique(df$var1)))

enter image description here

Проверьте ?discrete_scale для деталей. Вы можете использовать breaks и labels в различных комбинациях, в том числе с использованием меток, пришедших извне вашего data.frame:

pers.labels <- paste('Output', 1:12)

ggplot(df, aes(var1, var2)) +
  geom_boxplot() +
  scale_x_discrete(NULL, labels = pers.labels)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...