用geom_bar重新排序ggplot(stat =" identity")

时间:2017-10-11 15:54:23

标签: r ggplot2 geom-bar

我准备了一个数据框并在他身上使用ggplot。但最初的订单不受尊重。我怎么能尊重这个命令?

Patient Nb_peptides Type_affinite
1       22         563             a
2       22        1040             b
3       22       11139             c
4       24         489             a
5       24        1120             b
6       24       11779             c
7       13         467             a
8       13        1239             b
9       13       14600             c


g_plot <- ggplot(data = nb_peptides_type, 
                 aes(x = reorder(Patient, True_order), 
                     y = Nb_peptides, 
                     fill = Type_affinite)) + 
  geom_bar(stat = "identity")

print(g_plot)

enter image description here

1 个答案:

答案 0 :(得分:0)

请提供独立代码以简化操作。

我会在你的情节之外使用levels来重新排序因子级别:它是你正在寻找的吗?

## fake dataframe
df <- data.frame(patient = as.factor(rep((21:30), each=3)), 
                 nb = rpois(30, 1000), 
                 type=sample(letters[1:3], replace =T, size =30))

## initial plot
ggplot(data = df, 
       aes(x = patient, 
           y = nb, 
           fill = type)) + 
  geom_bar(stat = "identity")

## adjust factors levels
True_order <- sample((21:30), 10)
levels(df$patient) <- True_order 


## re-plot
ggplot(data = df, 
       aes(x = patient, 
           y = nb, 
           fill = type)) + 
  geom_bar(stat = "identity")