在 gganimate plot [R] 的副标题中显示数据值
Displaying data value in subtitle of gganimate plot [R]
因为我在这里找不到答案,所以我的代码和使用数据的简化版本。
我的数据包含一个“days”变量,表示本周原始数据点的数量。使用 gganimate 图,我可以在动画中显示当前的一周,但不能显示关联的聚合数据点(“天”)。
示例数据:
df <- structure(list(GKZ = c(101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L), week = c(8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50), district = c("Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)"), deaths = c(0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), pop = c(14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L), days = c(5L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 4L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 4L), deathrate = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 20.2483801295896, 20.2483801295896, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0)), row.names = c(NA, -86L), groups = structure(list(GKZ = 101:102,
.rows = structure(list(1:43, 44:86), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = 1:2, class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
我的实际绘图使用 shapefile 上的完整数据集的连接。我希望这个示例图足以解释我的问题。如何正确引用字幕参数中的每一行数据?
使用以下代码,仅打印第一个“天”值。
library(tidyverse)
library(gganimate)
df %>%
ggplot(aes(district, deathrate))+geom_col()+
labs(title = "Week: {current_frame}",
subtitle = paste0("Number of days: ", {df$days}))+
transition_manual(week) + ease_aes("linear")
由于gganimate使用胶水我也尝试了胶水符号,但是这个returns在其他错误...
subtitle = "Number of days: {days}"
subtitle = "Number of days: {df$days}"
如果能在字幕参数之外完成,我也很高兴:)
这可以通过过滤数据集并提取所需的变量来实现。这样做时我收到一个错误,因为您的数据集每帧包含多行(区域)。因此我使用 .[[1]]
来提取第一个值。
library(tidyverse)
library(gganimate)
df %>%
ggplot(aes(district, deathrate))+geom_col()+
labs(title = "Week: {current_frame}",
subtitle = "Number of days: {filter(df, week == current_frame) %>% pull(days) %>% .[[1]]}") +
transition_manual(week) + ease_aes("linear")
因为我在这里找不到答案,所以我的代码和使用数据的简化版本。
我的数据包含一个“days”变量,表示本周原始数据点的数量。使用 gganimate 图,我可以在动画中显示当前的一周,但不能显示关联的聚合数据点(“天”)。
示例数据:
df <- structure(list(GKZ = c(101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L, 101L,
101L, 101L, 101L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L, 102L,
102L, 102L), week = c(8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50), district = c("Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Eisenstadt(Stadt)", "Eisenstadt(Stadt)", "Eisenstadt(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)",
"Rust(Stadt)", "Rust(Stadt)", "Rust(Stadt)"), deaths = c(0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 3L, 3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L), pop = c(14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L,
14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 14816L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L, 1980L,
1980L, 1980L, 1980L, 1980L, 1980L, 1980L), days = c(5L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 4L, 5L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 4L), deathrate = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 20.2483801295896, 20.2483801295896, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0)), row.names = c(NA, -86L), groups = structure(list(GKZ = 101:102,
.rows = structure(list(1:43, 44:86), ptype = integer(0), class = c("vctrs_list_of",
"vctrs_vctr", "list"))), row.names = 1:2, class = c("tbl_df",
"tbl", "data.frame"), .drop = TRUE), class = c("grouped_df",
"tbl_df", "tbl", "data.frame"))
我的实际绘图使用 shapefile 上的完整数据集的连接。我希望这个示例图足以解释我的问题。如何正确引用字幕参数中的每一行数据? 使用以下代码,仅打印第一个“天”值。
library(tidyverse)
library(gganimate)
df %>%
ggplot(aes(district, deathrate))+geom_col()+
labs(title = "Week: {current_frame}",
subtitle = paste0("Number of days: ", {df$days}))+
transition_manual(week) + ease_aes("linear")
由于gganimate使用胶水我也尝试了胶水符号,但是这个returns在其他错误...
subtitle = "Number of days: {days}"
subtitle = "Number of days: {df$days}"
如果能在字幕参数之外完成,我也很高兴:)
这可以通过过滤数据集并提取所需的变量来实现。这样做时我收到一个错误,因为您的数据集每帧包含多行(区域)。因此我使用 .[[1]]
来提取第一个值。
library(tidyverse)
library(gganimate)
df %>%
ggplot(aes(district, deathrate))+geom_col()+
labs(title = "Week: {current_frame}",
subtitle = "Number of days: {filter(df, week == current_frame) %>% pull(days) %>% .[[1]]}") +
transition_manual(week) + ease_aes("linear")