geom_segment ggplot을 색상으로 주문하는 방법
나는 ggplot도서관을 처음 사용합니다 . 그리고 다음을 사용하여 플롯을 그리려고합니다 data.frame.
library(tidyverse)
df <-tribble(~event, ~startdate,~enddate,~loc,
"A",as.POSIXct("1984/02/10"),as.POSIXct("1987/06/10"),"1",
"B",as.POSIXct("1984/02/11"),as.POSIXct("1990/02/12"),"2",
"A",as.POSIXct("1992/05/15"),as.POSIXct("1999/06/15"),"3",
"C",as.POSIXct("2003/08/29"),as.POSIXct("2015/08/29"),"4",
"B",as.POSIXct("2002/04/11"),as.POSIXct("2012/04/12"),"5",
"E",as.POSIXct("2000/02/10"),as.POSIXct("2005/02/15"),"6")
max_date = max(df$startdate,df$enddate)
다음 코드 스 니펫 사용 :
ggplot(NULL)+
geom_segment(data = df,aes(x=loc, xend =loc,y = startdate, yend = enddate,colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=df$event,x = df$loc,y=max_date), size=2) +
#geom_point(data=final_df,aes(x=newspaper,y=date),color="black") + Point from other data frame
coord_flip() + xlab("LoC") + ylab("Year")
다음 차트를 출력 할 수 있습니다.
어떻게 사용하는, 즉 색상을 사용하여 위의 차트 주문할 수 있습니다 event(I가에 조작으로 그룹을 수행 할 수있는 방법을 다른 단어 필드를 event첫 있도록 필드 는 C, 먼저 이벤트 다음 이벤트 B를 표시한다 등)? 내가 사용 시도 scale_x_continuous와 reorder에서 tidyverse패키지했지만 작동하지 않았다. x 축에 더 많은 "연도"를 표시하려면 어떻게해야합니까? 나는 사용하려고 시도했습니다 scale_x_date(여기에 언급 된 R : ggplot은 x 축에 모든 날짜를 표시 하지만 형식 이 필요 as.Date하고 ggplot geom_segment필요 as.POSIXct합니다). 저를 수정하십시오!
어떤 도움이라도 좋을 것입니다! 감사합니다!
답변
두 가지 옵션. 또한 x와 y를 뒤집어 사용하지 않아도되며 coord_flip()x 축 레이블을 포함하여 몇 가지 다른 작은 수정을 수행했습니다 ( scale_y_datetime축을 뒤집고 "날짜"가 실제로 POSIXct에 있었기 때문에 찾고 있었습니다). 또한 Duck의 대답과 다른 한 가지 차이점은 내 저울 = "무료"입니다 facet_grid. 레이블을 결정할 수 있고 "loc"변수는 이러한 새 그래프를 고려할 때 의미가 없을 수 있습니다.
library(tibble); library(ggplot2)
df <-tribble(~event, ~startdate,~enddate,~loc,
"A",as.POSIXct("1984/02/10"),as.POSIXct("1987/06/10"),"1",
"B",as.POSIXct("1984/02/11"),as.POSIXct("1990/02/12"),"2",
"A",as.POSIXct("1992/05/15"),as.POSIXct("1999/06/15"),"3",
"C",as.POSIXct("2003/08/29"),as.POSIXct("2015/08/29"),"4",
"B",as.POSIXct("2002/04/11"),as.POSIXct("2012/04/12"),"5",
"E",as.POSIXct("2000/02/10"),as.POSIXct("2005/02/15"),"6")
max_date = max(df$startdate,df$enddate)
ggplot(df)+
geom_segment(aes(y=event, yend = event, x = startdate, xend = enddate, colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=event, y = event, x=max_date), size=2) +
xlab("Year") + ylab("LoC") +
scale_x_datetime(date_breaks = "year", date_labels = "%Y") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5))
ggplot(df)+
geom_segment(aes(y=loc, yend = loc, x = startdate, xend = enddate, colour=event),size = 5,alpha=0.6) +
geom_label(aes(label=event, y = loc, x=max_date), size=2) +
xlab("Year") + ylab("LoC") +
scale_x_datetime(date_breaks = "year", date_labels = "%Y") +
theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) +
facet_grid(rows = vars(event), scales = "free")
reprex 패키지 (v0.3.0)에 의해 2020-10-18에 생성됨
@ArthurYip 설정 재정렬에서 언급했듯이 이것을 옵션으로 고려하면 플롯의 감각에 영향을 미칠 수 있습니다. 레이블을 피하고 facet_grid()다음 방법으로 사용할 수 있습니다.
library(ggplot2)
#Plot
ggplot(df)+
geom_segment(aes(x=loc, xend =loc,y = startdate, yend = enddate,colour=event),size = 5,alpha=0.6) +
coord_flip() + xlab("LoC") + ylab("Year")+
facet_grid(event~.,switch = "x")
산출: