是否可以直接在R中创建动画,如在Matlab中,而不实际保存数字和使用外部软件?只是执行一个脚本?
在Matlab中考虑以下示例。
t = (1:360) / 180 * pi; % 360 angles in radians from 1 to 360 degrees
n = length(t); % Length of vector
x = cos(t); % Cosines
y = sin(t); % Sines
f = figure; % Create figure and its handle
hh = plot(2, 2, 'or', 'MarkerFaceColor', 'r', 'MarkerSize', 10); % Create plot and its handle
set(gca, 'XLim', [-1 1]); % Set x axis limits
set(gca, 'YLim', [-1 1]); % Set y axis limits
axis square; axis off; % Set more properties for axes
while ishandle(f) % Until the user closes the figure
try % Try this loop, if encouter an error just break the loop
for ii = 1:n % For all angles
set(hh, 'XData', x(ii)) % Change point x coordinate
set(hh, 'YData', y(ii)) % Change point y coordinate
pause(0.01) % Make a little pause
end
end
end
在 hrbrmstr 的回答之后,我试过了这个:
t <- (1:360) / 180 * pi
n <- length(t)
x <- cos(t)
y <- sin(t)
while(TRUE) {
for (i in 1:n) {
plot(x[i], y[i], ann=FALSE, pch=20, axes=FALSE, xlim=c(-1, 1), ylim=c(-1, 1), col="red", cex=4, asp=1)
Sys.sleep(0.01)
}
}
它似乎在做这项工作。谢谢!
我也试过这个:
t <- (1:360) / 180 * pi
n <- length(t)
x <- cos(t)
y <- sin(t)
while(TRUE) {
for (i in 1:n) {
plot.new()
usr<-par("usr")
par(usr=c(-1.1, 1.1, -1.1, 1.1))
lines(x, y, col="green")
points(x[i], y[i], pch=20, col="red", cex=4, asp=1)
Sys.sleep(0.01)
}
}
这更接近我最初的想法。然而,我发现R的“纸和笔”绘图模型非常糟糕。是不是有办法解决这个问题?
答案 0 :(得分:1)
我不打算弄清楚所有matlab绘图都在做什么,而不是美学。
此:
while(TRUE) {
barplot(sample(1:1000, 10))
Sys.sleep(0.5)
}
“动画”随机条形图显示IMO和:
t <- (1:360) / 180 * pi
n <- length(t)
x <- cos(t)
y <- sin(t)
for (i in 1:n) {
plot(x[1:i], y[1:i], type="p")
Sys.sleep(0.15)
}
以一种方式完成点的“动画”的一个基本位,并且:
for (i in 1:n) {
plot.new()
points(x[1:i], y[1:i])
Sys.sleep(0.15)
}
在另一个(虽然需要一些工作设置x&amp; y限制以避免图形设备错误)。
当GUI要求“停止”或for
循环完成时,所有三个停止。
不完全“不成比例地复杂”。更像是“对matlab人不熟悉”。