2017-12-08 11 views
1

良いタイトルを変更する方法:Rとgganimate:SOコミュニティ、 私は次のコードスニペットを持って朝

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がありますが、まだ元のレポにマージされていません。その間に、devtools::install_github("nteetor/gganimate")を使用して修正パッケージをインストールしてから、次の操作を行うことができます。

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

ありがとう@mtoto。残念ながら、あなたの修正は私には役に立たない。まず、 'gg_animate(chart、title_frame =〜someData $ label [。])'のようなコードを書かなければなりません: 'エラー:フレームタイトルを作成できませんでした。次に、最初のフレーム(5000B.E.)の正しいラベルを貼り付けます。0ラベル(タイトルには表示されていません)まで変更されず、そのまま「NA」と表示されます。また、 'frame'値にテキスト(例えば 'Years:')を前置すると、' ggtitle'や 'label'命令に問題があります。最終的に無視します。 – LuPi

+0

上記の問題は、次のような警告に関係していますか? 'geom_path:各グループは1つの観測のみで構成されています。あなたはグループの美意識を調整する必要がありますか?ありがとうございます – LuPi

+0

アップデートを参照してください、これは動作するはずです – mtoto

関連する問題