指定条形图R上条形的位置

时间:2018-12-05 17:04:40

标签: r ggplot2 bar-chart

我在下面有示例数据:

> 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来指定我想要的分组和顺序。

感谢所有帮助,谢谢。

1 个答案:

答案 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')

enter image description here

编辑-使用baseR的解决方案如下-

eg_data$period <- factor(eg_data$period, levels = c("1 & 2", "1", "2"))