Gio*_*oni 5 r ggplot2 gganimate
我想将我的数据的另一列值插入到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
Run Code Online (Sandbox Code Playgroud)
这按预期工作:
ggplot(df, aes(x, x)) +
geom_point() +
labs(title = '{closest_state}') +
transition_states(x,
transition_length = 0.1,
state_length = 0.1)
Run Code Online (Sandbox Code Playgroud)
这失败了:
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)
Run Code Online (Sandbox Code Playgroud)
eval中的错误(parse(text = text,keep.source = FALSE),envir):
找不到对象'y'
也尝试了这个,但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)
Run Code Online (Sandbox Code Playgroud)
另一个选择是映射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)
Run Code Online (Sandbox Code Playgroud)
那么如何简单地添加无序而非数字y变量的变化值?
最后:这个问题在这里被问到但是没有可重复的例子所以没有回答,希望这个问题更好.
一种肮脏的解决方案是将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
Run Code Online (Sandbox Code Playgroud)
然后我们可以使用gsub()in ordet 来删除closest_state不需要的部分,如下所示:
gsub(pattern = "\\d+-", replacement = "", "1-a")
"a"
Run Code Online (Sandbox Code Playgroud)
所以:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |