반응형
geom_bar ()를 플로팅하는 동안 ggplot이 x 축을 정렬하지 않도록합니다.
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
내가 원하는 것은 막대 플롯을 만들고 막대의 순서를 유지하는 것입니다 (예 :로 시작 SC_LTSL_BM ...B_GC_Sp
). 그러나 ggplot geom_bar의 기본 동작은 정렬하는 것입니다. 어떻게 피할 수 있습니까?
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()
현재 그림은 다음과 같습니다.
ggplot에 이미 정렬 된 요소가 있음을 알려 주어야하므로 자동으로 정렬되지 않습니다.
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")
다음은 원본 데이터를 수정하지 않고 scale_x_discrete를 사용하는 방법입니다. ? scale_x_discrete "제한을 사용하여 표시되는 수준 (및 순서) 조정"예 :
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)
여기에 설명 된대로 해당 요소를 다시 정렬 할 수도 있습니다.
x$name <- factor(x$name, levels = x$name[order(x$val)])
dplyr을 사용하면 ggplot row
에서 재정렬 할 수 있는 열을 쉽게 만들 수 있습니다.
library(dplyr)
dat <- read.table("...") %>% mutate(row = row_number())
ggplot(df,aes(x=reorder(V1,row),y=V2))+geom_bar()
참조 URL : https://stackoverflow.com/questions/20041136/avoid-ggplot-sorting-the-x-axis-while-plotting-geom-bar
반응형
'code' 카테고리의 다른 글
웹 페이지에 YouTube 채널을 삽입하는 방법 (0) | 2020.12.30 |
---|---|
제출 또는 사용자 입력시에만 양식 필드 유효성 검사 (0) | 2020.12.30 |
내 위치 : 플렉스 박스를 사용할 때 고정 요소가 고정되지 않습니다. (0) | 2020.12.30 |
스택리스 C ++ 20 코 루틴이 문제입니까? (0) | 2020.12.30 |
log4j에서 오래된 회전 로그 파일을 삭제하려면 어떻게해야합니까? (0) | 2020.12.30 |