Вы можете заказать уровни 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))
Оба случая дадут одинаковый результат:
Вы также можете использовать его для персонализированных ярлыков; нет необходимости создавать новую переменную:
ggplot(df, aes(var1, var2)) +
geom_boxplot() +
scale_x_discrete('output', labels = gsub('out_', '', unique(df$var1)))
Проверьте ?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)