我在下面有示例数据:
> eg_data <- data.frame(period = c("1&2", "1&2","1", "1", "2","2"), size = c("big", "small", "big", "small","big", "small"), trip=c(1000, 250, 600, 100, 400, 150))
我想制作一个堆叠的条形图,其中两个周期都作为第一个柱线,两个周期为第二个,第二周期为第三个。这是在输入数据时指定的,但是当我运行ggplot
bar命令时,R
决定一个时间段是第一个位置的更好候选者。
ggplot() +
geom_bar(data = eg_data, aes(y = trip, x = period, fill = size),
stat = "identity",position = 'stack')
首先,为什么R
感到需要以一种不同于我输入数据的方式显示数据的需求,其次,我如何纠正此IE来指定我想要的分组和顺序。
感谢所有帮助,谢谢。
答案 0 :(得分:2)
我们可以将列创建为factor
,并将levels
指定为该列的unique
值。这样一来,这些值将不会被排序,并且将按照与第一个unique
值“ period”的出现顺序相同的顺序
library(tidyverse)
eg_data %>%
mutate(period = factor(period, levels = unique(period))) %>%
ggplot() +
geom_bar(aes(y = trip, x = period, fill = size),
stat="identity",position='stack')
编辑-使用baseR的解决方案如下-
eg_data$period <- factor(eg_data$period, levels = c("1 & 2", "1", "2"))