gpt4 book ai didi

r - gganimate:在标题表达式中包含除状态级别变量或框架以外的其他变量

转载 作者:行者123 更新时间:2023-12-04 19:26:45 33 4
gpt4 key购买 nike

我想将我的数据的另一列值插入gganimate动画标题中。

例如,这里的状态级别变量是x,我想添加到标题变量y:

df <- tibble(x = 1:10, y = c('a', 'a', 'b', 'd', 'c', letters[1:5]))
df

A tibble: 10 x 2
x y
<int> <chr>
1 1 a
2 2 a
3 3 b
4 4 d
5 5 c
6 6 a
7 7 b
8 8 c
9 9 d
10 10 e

这可以按预期工作:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = '{closest_state}') +
transition_states(x,
transition_length = 0.1,
state_length = 0.1)

enter image description here

这将失败:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = '{closest_state}, another_var: {y}') +
transition_states(x,
transition_length = 0.1,
state_length = 0.1)

Error in eval(parse(text = text, keep.source = FALSE), envir) :
object 'y' not found



也尝试过此方法,但 y不会更改:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = str_c('{closest_state}, another_var: ', df$y)) +
transition_states(x,
transition_length = 0.1,
state_length = 0.1)

enter image description here

另一个选择是将 y映射为状态级别变量,并使用 frame变量而不是 x,但是在我的应用程序中, y要么是如上所述的不必要的唯一字符变量,要么是数字变量,但又不是必需的-唯一且不必要排序。在这种情况下, gganimate(或 ggplot?)将按其认为合适的顺序对其进行排序,从而使最终结果很奇怪,而不是 x对其未进行排序:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = '{frame}, another_var: {closest_state}') +
transition_states(y,
transition_length = 0.1,
state_length = 0.1)

enter image description here

那么,如何简单地添加无序的而不是数字的 y变量的变化值呢?

最后:有人问了这个问题 here,但没有可复制的示例,因此没有得到回答,希望这个问题更好。

最佳答案

一种肮脏的解决方案是将变量paste在一起,然后在transition_states中使用新的变量:

df <- mutate(df, title_var = factor(paste(x, y, sep="-"), levels = paste(x, y, sep="-")))
# # A tibble: 6 x 3
# x y title_var
# <int> <chr> <fct>
# 1 1 a 1-a
# 2 2 a 2-a
# 3 3 b 3-b
# 4 4 d 4-d
# 5 5 c 5-c
# 6 6 a 6-a

然后,我们可以在ordet中使用 gsub()从不需要的部分中删除 closest_state,如下所示:
gsub(pattern = "\\d+-", replacement = "", "1-a") 
"a"

所以:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = '{gsub(pattern = "\\d+-", replacement = "", closest_state)}') +
transition_states(title_var, transition_length = 0.1, state_length = 0.1)

enter image description here

关于r - gganimate:在标题表达式中包含除状态级别变量或框架以外的其他变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53864892/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com