2017-03-29 1 views
7

gganimateを使用していくつかの月次データをアニメートしようとしています。ディセンダ(ベースラインを下回る文字、つまりg、j、p、q、y)が存在すると、タイトルが占めるスペースの量が変化するという点を除いて、プロットは大きく機能しています。これは、タイトルのベースラインをちょう​​ど少し動かし、アニメーションを損なう。つまり、タイトルにディケンダーがある場合、タイトルは目立つように「ジャンプ」します。デシケータ文字でアニメートするときにタイトルスペースが変わらないようにする

例:それは代わりにプロットを移動するように、問題はより明らかだった(と証明するために年を含めることを必要としませんでした)gganimateの古いバージョンを使用して

myDF <- 
    data.frame(
    Date = seq(as.Date("2015-01-15") 
       , as.Date("2015-12-15") 
       , "1 month") 
    , x = 1:12 
    , y = 1:12 
) 

myDF$frame <- 
    factor(format(myDF$Date, "%Y-%b") 
     , levels = paste0("2015-", month.abb)) 

toAnimate <- 
    ggplot(
    myDF 
    , aes(x = x 
      , y = y 
      , frame = frame) 
) + 
    geom_point() + 
    theme_gray() 

gganimate::gganimate(toAnimate) 

enter image description here

gganimate::gg_animate(toAnimate) 

enter image description here

:タイトルの

すべてのキャップ(ディセンダがない)を使用して問題を修正することはできますが、特にこれについてのすべてのキャップの外観が気に入らない(特に、実際の使用例では大きなタイトルの一部として)。私はまた、フレームタイトルの前に既にディセンダーを持っているものを追加することもできます。 ggtitle("Timeperiod: ")私はむしろ、この問題を回避するために無関係のテキストを追加することはしませんでした(「Timeperiod」を追加することは、私が今行っていることです)。

themeのヘルプを見て、ggplot2にありますが、この問題に対処しているように見えません。

+0

あなたは* gganimate *を更新したことがありますか?最新バージョンでは、関数 'gg_animate'を' gganimate'に置き換えています。新しいバージョンではディセンダーの問題を再現できません。 – aosmith

+0

ありがとう@aosmith。私はちょうど更新し、問題ははるかに微妙です(潜在的に問題にならないように)。しかし、更新によって、タイトルのベースラインが移動するようになっているように見えます(これは、プロット領域の変更よりも優れていますが、理想的ではありません)。この問題は、タイトルに月が入っている場合には微妙なものではないので、わかりやすいようにプロットをわずかに(年を含めて)調整しました。 –

答えて

2

タイトルのスペースが予約されている場合は、タイトルにはフォントの高さではなくテキストの高さが表示されるようです。

代わりにgeom_textを使用して、プロットのどこかにタイトルを配置することができます。例えば、私がしなければ:

ggplot(myDF, aes(x=x,y=y, label=frame)) + 
    geom_point()+theme_gray() + 
    geom_text(x=2.5,y=5,aes(label=frame),adj=0) 

(ちょうどggplotとして、アニメーションはまだない...)私は正確に重複すべて2015年代を見ることができる、と月名のディセンダーが明らかに存在しており、テキストベースラインは一定である。あなたはプロットに便利な空間にあなたのタイトルを置くことができる場合

だから、あなたはそれを使用して、あなたのgganimatetitle_frame=FALSEを使用することができます。

私はまた、バグ/強化レポートをggplot2と考えています。あなたはタイトルを大きくする場合には十分なそれは実際にプロット上stomps:

ggplot(myDF, aes(x=x,y=y)) +geom_point()+theme(plot.title=element_text(size=rel(10),debug=TRUE)) + labs(title="y") 

enter image description here

+0

これは堅牢な回避策であり、大きな助けとなります。実際には、私が作っているプロットは、 'geom_text'をタイトル回避策として使うのが理想的ではないほど複雑です(ファセットや要因など)。'' ggplot2''がスペース予約を処理する際に、 "fault"(?)があるかもしれないことは非常に興味深いことです。しかし、私は、このユースケースがそれを再構成することを正当化するのに十分であるとは確信していません。 Upvotedしかし、私は問題を解決する答えが出てくるかどうかを確認するために、少しの間受け入れられないままにするつもりです(私はあなたの説明がそれを排除すると思うので、私はそれを疑う)。 –

+1

タイトルに目に見えない "y"を追加する方法があれば、うまくいくかもしれません...高さを固定するための 'element_text'オプションもありませんでした。 – Spacedman

関連する問題