Mar*_*son 7 r ggplot2 gganimate
我正在尝试使用一些月度数据制作动画gganimate
.这些图表工作得很好,除了下降点(低于基线的字母,即g,j,p,q和y)的存在改变了标题占用的空间量.反过来,这会稍微移动标题的基线,这会减损动画.也就是说,当标题中有下降符时,标题会明显地"跳跃"一点.
一个例子:
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)
Run Code Online (Sandbox Code Playgroud)
使用旧版本gganimate
的问题更为明显(并且不需要包含年份来演示),因为它移动了剧情而不是标题:
gganimate::gg_animate(toAnimate)
Run Code Online (Sandbox Code Playgroud)
我可以通过使用所有大写字母(没有下行程序)来"解决"这个问题,但我并不特别喜欢所有大写的外观(特别是作为实际用例的较大标题的一部分).我也可以用已经有下降器的东西预先添加帧标题,例如,ggtitle("Timeperiod: ")
我不想添加不相关的文本来解决这个问题(添加"Timeperiod:"就是我现在已经使用的东西).
我已经通过在帮助看theme
在ggplot2
,但我没有看到任何看起来像它会解决这个问题.
为标题保留空间时,标题似乎只获取文本的高度,而不获取字体的高度。
因此,您可以改为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)
Run Code Online (Sandbox Code Playgroud)
(就像 ggplot 一样,还没有动画...)我可以看到 2015 年的所有数据完全重叠,并且月份名称的下行部分清晰可见,并且文本基线是恒定的。
因此,如果您可以将标题放在绘图上方便的位置,您就可以使用它,并title_frame=FALSE
在您的gganimate
.
我还会考虑向ggplot2
. 如果你把标题设置得足够大,它实际上会影响情节:
ggplot(myDF, aes(x=x,y=y)) +geom_point()+theme(plot.title=element_text(size=rel(10),debug=TRUE)) + labs(title="y")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
153 次 |
最近记录: |