-4

I have prepare a dataframe and use a ggplot on him. But the initial order is not respected. How i can respect this order ?

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

Z.Lin
  • 28,055
  • 6
  • 54
  • 94

1 Answers1

0

Please provide stand-alone code to make it easier.

I would use levels outside of your plot to reorder factor levels : Is it what you're looking for ?

## 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")
Flecflec
  • 233
  • 3
  • 9