Évitez de ggplot en sortingant l’axe des x lors du traçage de geom_bar ()

J’ai les données suivantes que je veux tracer avec ggplot:

SC_LTSL_BM 16.8275 SC_STSL_BM 17.3914 proB_FrBC_FL 122.1580 preB_FrD_FL 18.5051 B_Fo_Sp 14.4693 B_GC_Sp 15.4986 

Ce que je veux faire, c’est faire un graphique en barres et maintenir l’ordre de la barre (c’est-à-dire en commençant par SC_LTSL_BM ...B_GC_Sp ). Mais le comportement par défaut de ggplot geom_bar est de les sortinger. Comment puis-je éviter cela?

  library(ggplot2) dat <- read.table("http://dpaste.com/1469904/plain/") pdf("~/Desktop/test.pdf") ggplot(dat,aes(x=V1,y=V2))+geom_bar() dev.off() 

La figure actuelle ressemble à ceci: entrer la description de l'image ici

Vous devez dire à ggplot que vous avez déjà un facteur ordonné, il ne le commandera donc pas automatiquement.

 dat <- read.table(text= "SC_LTSL_BM 16.8275 SC_STSL_BM 17.3914 proB_FrBC_FL 122.1580 preB_FrD_FL 18.5051 B_Fo_Sp 14.4693 B_GC_Sp 15.4986", header = FALSE, stringsAsFactors = FALSE) # make V1 an ordered factor dat$V1 <- factor(dat$V1, levels = dat$V1) # plot library(ggplot2) ggplot(dat,aes(x=V1,y=V2))+geom_bar(stat="identity") 

entrer la description de l'image ici

Voici une approche qui ne modifie pas les données d’origine, mais utilise scale_x_discrete. De? Scale_x_discrete “Utilisez les limites pour ajuster les niveaux (et dans quel ordre) sont affichés” Par exemple:

 dat <- read.table(text= "SC_LTSL_BM 16.8275 SC_STSL_BM 17.3914 proB_FrBC_FL 122.1580 preB_FrD_FL 18.5051 B_Fo_Sp 14.4693 B_GC_Sp 15.4986", header = FALSE, stringsAsFactors = FALSE) # plot library(ggplot2) ggplot(dat,aes(x=V1,y=V2))+ geom_bar(stat="identity")+ scale_x_discrete(limits=dat$V1) 

entrer la description de l'image ici

Vous pouvez également ré-ordonner le facteur correspondant comme décrit ici

 x$name <- factor(x$name, levels = x$name[order(x$val)])