Оригинал: R: Animating 2D and 3D plots
Одним из отличных пакетов в R является animation, созданный Yihui Xie. И просто для развлечения, мы собираемся исследовать его. Наша цель - создавать простые анимированные 2D и 3D графики. Вот первый, пока двумерный:
Код:
library(animation)
saveGIF({
for(i in 1:100){
curve(sin(x), from = -5 + (i * 0.05), to = 5 + (i * 0.05), col = "red", ylab = "")
curve(cos(x), from = -5 + (i * 0.05), to = 5 + (i * 0.05), add = TRUE, col = "blue", ylab = "")
legend("topright", legend = c("sin(x)", "cos(x)"), fill = c("red", "blue"), bty = "n")
}
}, interval = 0.1, ani.width = 550, ani.height = 350)
Проще пареной репы, верно? Для переноса графика мы использовали функцию saveGIF, в основном она собирает все созданные графики и использует их в качестве фреймов файла GIF. Другими словами, вышеприведенный график был сгенерирован 100 раз с помощью функции curve, и на каждой итерации мы увеличивали пределы оси x; следовательно, перебирая все сгенерированные графики, мы получаем анимацию оси X к положительным значениям.
Как насчет 3-мерного графика?
Функция приведенного выше графика: z = sin (x × y), и он был сгенерирован с использованием приведенного ниже кода
library(animation)
saveGIF({
for(i in 1:100){
x <- 0.05="" 3="" i="" length="100)</font" seq="">->
y <- font="" x="">->
f <- font="" function="" sin="" x="" y="">->
z <- f="" font="" outer="" x="" y="">->
persp(x, y, z, theta = 45, phi = 35, expand = 0.4, col = "orange")
}
}, interval = 0.1, ani.width = 550, ani.height = 550)
Другая волна, z = sin (x) + cos (y), зациклена как в диапазонах x и y, так и в градусах θ:
library(animation)
saveGIF({
for(i in 1:150){
x <- 0.05="" 6="" i="" length="100)</font" seq="">->
y <- font="" x="">->
f <- cos="" font="" function="" sin="" x="" y="">->
z <- f="" font="" outer="" x="" y="">->
persp(x, y, z, theta = 45 + (i * 0.5), phi = 35, expand = 0.4, col = "lightblue")
}
}, interval = 0.1, ani.width = 550, ani.height = 550)
Вы должны попробовать это
Замечание:
При установке пакета анимации animation установите требуемые программы, а также используйте функцию saveGIF(). Вы можете выбрать одно из следующих требований:
ImageMagick (http://imagemagick.org)
GraphicsMagick (http://www.graphicsmagick.org)
LyX (http://www.lyx.org) для saveGIF(); (PDF)LaTeX для saveLatex();
SWF Tools (http://swftools.org) для saveSWF();
FFmpeg (http://ffmpeg.org) для saveVideo()
Комментариев нет:
Отправить комментарий