我正在练习使用gganimate
并想创建类似于这个闪亮应用程序但动画的东西。我取得了一些成功,但遇到了一个非常奇怪的错误,我真的无法解释,希望有人能帮助我。这篇文章的其余部分包含一个完全可重现的示例。
这是我到目前为止所拥有的:
bernoulli <- cbind.data.frame(c(rep(1,101), rep(0,101)), c(seq(1,0,by=-0.01), seq(0,1,by=0.01)), c(seq(1,0,by=-0.01), seq(1,0,by=-0.01)))
names(bernoulli) <- c("success", "probability", "p")
bernoulli <- bernoulli[order(bernoulli$p),]
row.names(bernoulli) <- c(1:nrow(bernoulli))
这将创建我正在使用的数据框。这是三个变量,非常简单。我的动画的逻辑是二分结果的概率如何随伯努利分布的p参数而变化。举一个静态图的例子,如果我这样做:
ggplot(subset(bernoulli, p == 0.70), aes(x=success, y=probability)) +
geom_bar(stat="identity")
并改变p
我的子集,我得到了想要的结果(尽管由于某种原因,有某些数字,看似完全随机,我无法对数据进行子集,即使我可以在数据框中清楚地看到它们。我已经检查了变量是数字等等,所以这不是问题。这是一个附带问题,我不知道它为什么会发生)。
例如,在 p == 0.12 和 p == 0.70 之间切换,并将它们与前面提到的 Shiny 应用程序进行比较,您会看到它匹配,当然轴会有所不同。
当我尝试按如下方式实现动画时:
ggplot(bernoulli, aes(x=success, y=probability)) +
geom_bar(stat="identity") +
transition_time(p)
一切看起来都很棒!轴匹配得很好,动画流畅......但是一旦条达到 p == 0.50,它们都跳到 1,这根本没有反映在数据中。这只是我的计算机/R/ggplot/gganimate 的问题吗?