我正在尝试使用ggplot2和geom_col在堆积的条形图中绘制七个不同单位的累积成本。我面临的挑战是在绘制数据时,在x轴上我无法获得升序的单位。
> b1
Unit variable value
1 60k BOM 2950806
2 100k BOM 3236021
3 120k BOM 3533470
4 140k BOM 3611764
5 170k BOM 3855279
6 200k BOM 4166095
7 230k BOM 4468843
8 60k NaOH 255676
9 100k NaOH 255676
10 120k NaOH 255676
11 140k NaOH 255676
12 170k NaOH 255676
13 200k NaOH 255676
14 230k NaOH 255676
library(ggplot2)
p1 <- ggplot(b1, aes(Unit, 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
我希望x轴显示60k,100k,120k,140k,200k,230k,但相反,它显示
100k,120k,140k,200k,230k,60k。
答案 0 :(得分:0)
如果您按所需顺序放置关卡:
level_order <- c('60k', '100k', '120k', '140k', '170k', '200k', '230k')
您可以在绘图中使用它而无需更改基础数据。
让我知道这是否是您的初衷。
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'))