2017-12-08 8 views
1

좋은 아침 SO 커뮤니티, 을 변경하는 방법은 다음 코드 조각이 :R과 gganimate : 제목을

library(animation) 
library(dplyr)  
library(gganimate) 
library(ggplot2) 

someData = data.frame(years = seq(-5000, 1000, by = 100)) %>% 
mutate(values = sample(1:20, length(years), replace = TRUE), 
     label = ifelse(years < 0, paste0(abs(years), ' B.C.E.'), years)) 

chart = ggplot(someData) + 
geom_line(aes(x = years, y = values, frame = years, cumulative = TRUE)) + 
ggtitle('Year: ') 

gganimate(chart, interval = .2) 

이 방법은, 세월이 플롯의 제목에 표시 (숫자 정렬을). label 값을 데이터 프레임에 나타나는 순서대로 넣는 방법이 있습니까?

내 첫 번째 시도는 geom_line의 미학에서 frame = label을 사용했지만 알파벳순으로 레이블이 나타났습니다.

someData$label = factor(someData$label, levels = someData$label, order = TRUE) 

을하지만이 나에게 다음과 같은 오류 준 : 그래서, 나는 수준을 통해 주문 변경하려고 덕분에

Error in frame_vec == f : comparison of these types is not implemented 
In addition: Warning message: 
In FUN(X[[i]], ...) : 
Incompatible methods ("Ops.ordered", "Ops.factor") for "==" 

어떤 도움이 많이 주시면 감사하겠습니다을.

답변

1

실제로이 기능과 관련하여 보류중인 pull request이 있지만 원래의 repo에 아직 병합되지 않았습니다. 한편, 당신은 devtools::install_github("nteetor/gganimate")를 사용하여 수정 된 패키지를 설치할 수 있습니다, 그리고 당신은 할 수 있습니다 :

gg_animate(chart, title_frame = ~ with(someData, label[years == .])) 
+0

감사 @mtoto을. 불행히도 귀하의 수정 프로그램이 작동하지 않습니다. 첫째,'gg_animate (chart, title_frame = ~ someData $ label [.])'와 같은 것을 써야만합니다 :'오류 : 프레임 제목을 만들 수 없습니다. '라벨'객체가 없습니다 '. 그런 다음 첫 번째 프레임 (5000 B.C.E.)에 대한 올바른 레이블을 넣습니다. 0 레이블 (제목에 표시되지 않음)까지 변경되지 않고 'NA'를 표시합니다. 또한 'frame'값에 텍스트 (예 : 'Years :')를 추가 할 때'ggtitle' 및'label' 명령에 문제가 있습니다. 결국에는 무시됩니다. – LuPi

+0

위의 문제는 어떻게 든 다음 경고와 관련 될 수 있습니다 :'geom_path : 각 그룹은 단지 하나의 관찰로 구성됩니다. 그룹 미학을 조정해야합니까? 감사합니다 – LuPi

+0

업데이트를 참조하십시오,이게 작동합니다 – mtoto