Если вы расположите свои уровни в нужном порядке:
level_order <- c('60k', '100k', '120k', '140k', '170k', '200k', '230k')
Вы можете использовать это на графиках без изменения базовых данных.
Дайте мне знать, если это то, что вы имели вmind.
b1 <- read.table(text =
"Unit variable value
60k BOM 2950806
100k BOM 3236021
120k BOM 3533470
140k BOM 3611764
170k BOM 3855279
200k BOM 4166095
230k BOM 4468843
60k NaOH 255676
100k NaOH 255676
120k NaOH 255676
140k NaOH 255676
170k NaOH 255676
200k NaOH 255676
230k NaOH 255676", header = T)
library(ggplot2)
level_order <- c('60k', '100k', '120k', '140k', '170k', '200k', '230k')
p1 <- ggplot(b1, aes(factor(Unit, level = level_order), value, fill = variable))+
geom_col(position = "stack", colour = "black")+
labs(x = expression("Unit size"),
y = expression("Cost"*" / [NOK]"))+
theme_bw()+
theme(plot.background = element_blank(),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
p1
В качестве альтернативы, если вы хотите изменить уровни факторов в переменной b1
, вы можете сделать следующее, и вам не нужно изменять ваш оператор ggplot
:
b1$Unit <- factor(b1$Unit, levels = c('60k', '100k', '120k', '140k', '170k', '200k', '230k'))