使用R,我试图制作一个折线图,该线图使用gganimate基于x轴从左到右显示。我设法做到了,但我还想做的是使它成为scale_x_continuous(limits = c(i-5,i + 5)),即在要显示的点周围有一个窗口,并且该窗口将在显示下一个点的同时前进。
我尝试了许多方法来实现此目的,包括在带有和不带有aes()的scale_x_continuous中实现某种循环。似乎没有任何作用。我对ggplot2尤其是gganimate还是很陌生,但是我在网上找不到任何帮助。我觉得答案可能很简单,只是想念而已。
排序类似,但带有gganimate:
Similar example but not with gganimate
以下是一些可复制的代码,大致向您展示了我到目前为止所做的事情。
library(ggplot2)
library(gganimate)
library(gifski)
library(png)
Step <- c(1:50,1:50)
Name <- c(rep("A",50), rep("B",50))
Value <- c(runif(50,0,10), runif(50,10,20))
Final <- data.frame(Step, Name, Value)
a <- ggplot(Final, aes(x = Step, y = Value, group = Name, color = factor(Name))) +
geom_line(size=1) +
geom_point(size = 2) +
transition_reveal(Step) +
coord_cartesian(clip = 'off') +
theme_minimal() +
theme(plot.margin = margin(5.5, 40, 5.5, 5.5)) +
theme(legend.position = "none")
options(gganimate.dev_args = list(width = 7, height = 6, units = 'in', res=100))
animate(a, nframes = 100)
答案 0 :(得分:2)
请勿使用transition
,而应使用view
。例如:
ggplot(Final, aes(x = Step, y = Value, color = factor(Name))) +
geom_line(size = 1) +
geom_point() +
view_zoom_manual(
0, 1, pause_first = FALSE, ease = 'linear', wrap = FALSE,
xmin = 1:40, xmax = 11:50, ymin = min(Final$Value), ymax = max(Final$Value)
) +
scale_x_continuous(breaks = seq(0, 50, 2))