рекомендации

четверг, 2 июля 2020 г.

R: анимированный двумерные и трехмерные графики

Оригинал: 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)
LyX (http://www.lyx.org) для saveGIF(); (PDF)LaTeX для saveLatex();
SWF Tools (http://swftools.org) для saveSWF();
FFmpeg (http://ffmpeg.org) для saveVideo()

Комментариев нет:

Отправить комментарий