gpt4 book ai didi

r - 如何在 gganimate 动画中左对齐绘图标签?

转载 作者:行者123 更新时间:2023-12-04 10:28:59 25 4
gpt4 key购买 nike

我想将绘图标签(标题、副标题)对齐到图像的左侧,而不是绘图区域的左侧,以获得 gganimate 动画。

这可以通过转换为 gtable 然后修改布局来使用静态图表。动画需要一种不同的方法,因为 gganimate 对象无法转换为 gtable。

这段代码创建了一个带有默认标题和副标题对齐方式的静态图:

library(tidyverse)
library(gganimate)

static_plot <- iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width,
color = Species)) +
geom_point() +
labs(title = "I want this aligned with the left edge of the chart",
subtitle = "Not the left edge of the plotting area",
caption = "Because it looks better")

剧情是这样的:

static plot with default label alignment

我希望标题和副标题对齐到图像的左侧,而不是绘图区域的左侧。这对于静态图来说很简单,如下所示:

gtable_plot <- ggplotGrob(static_plot)
gtable_plot$layout$l[gtable_plot$layout$name %in% c("title", "subtitle")] <- 1

这会将标题和副标题对齐到图像的左侧,看起来像这样:

static plot with desired label alignment

尝试在 gganimate 图表上左对齐标签时出现问题。

已转换为 gtable 的 ggplot2 图表(如上例中的 gtable_plot)不能用于创建 gganimate 动画。一旦创建了动画对象,就不能将其转换为 gtable 对象。

例如,这会引发错误:

anim_plot <- static_plot +
transition_states(Species,
transition_length = 2,
state_length = 1)


ggplotGrob(anim_plot)

这也行不通:

gtable_plot +
transition_states(Species,
transition_length = 2,
state_length = 1)

因此,我需要一些其他方法来将标签对齐到图像的左侧,以便与 gganimate 一起使用。请注意,我不想使用 +theme(plot.title = element_text(hjust = -n)),因为 n 会因不同的情节而异。

最佳答案

现在可以使用 the dev version of ggplot2, thanks to Claus Wilke . ggplot2 现在通过 theme() 的参数支持左对齐,而不必修改已使用 ggplotGrob() 转换的绘图。这意味着您可以制作静态图,将标题(和副标题 + 说明)左对齐,然后使用 gganimate 对其进行动画处理。

参数是:theme(plot.title.position = "plot")

关于r - 如何在 gganimate 动画中左对齐绘图标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57370339/

25 4 0