2015-07-25 2 views
4

Я использовал Python в прошлом, но медленно переходил в R. Я в настоящее время пытаюсь создать граф поля колчана/направления и график равновесия. Я смог сделать это в Python, ссылки на примеры ниже, но с трудом отразил это в R. В Python я смог использовать такие пакеты, как numpy, matplotlib.pyplot, mpl_toolkits.mplot3d и scipy.integrate. В настоящее время я пытаюсь использовать deSolve, pracma и matlab. Существуют ли другие пакеты, которые я должен использовать, или функции в этих пакетах, и я не могу заставить их работать? Ниже приведен пример кода из бумаги, с которой я столкнулся. Любая помощь будет принята с благодарностью.Как сгенерировать диаграмму дрожания и диаграмму равновесия?

#Solve the system dy/dt = f(y, t) and model equations 
Example <- function(t, state, parameters) { 
    with(as.list(c(state, parameters)), { 

    dK <- a * K - b * H - c * F - d * H * F 
    dH <- b * H - a * K + c * F + e * F 
    dF <- f + c * F - a * K + b * H + h * K 
    list(c(dK, dH, dF)) 
    }) 
} 

#Parameters and Initial Conditions 
parameters <- c(a = 0.02, 
       b = 0.01, 
       c = 0.04, 
       d = 0.06, 
       e = 0.08, 
       f = 0.2, 
       h = 0.04) 
state  <- c(K = 0.7, 
       H = 0.6, 
       F = 0.3) 
times  <- seq(0, 100, by = 0.01) 

out <- ode(y = state, times = times, func = Example, parms = parameters) 

plot(out) 

Вот ссылки на графики, которые я пытаюсь отразить как можно больше:

Equilibrium Graph

enter image description here

Quiver/Direction Field Graph

enter image description here

+0

После того, как мы разобраться в ошибках, теперь мы имеем 6 серий: y1 , ...., Y6. Что именно мы должны делать с этими? –

+0

Спасибо за ответ. Прошу прощения, я отредактировал его в 3-мерной модели, чтобы упростить его. Мне было интересно, как это сделать в качестве случайного примера, как бы я мог генерировать графики равновесия и колчана, подобные примерам, приведенным выше из Python? Я не знаю, какие пакеты способны на это. У меня есть deSolve, matplot и phaser, но не удалось найти функции для этих опций. Я надеялся, что кто-то может вести меня в правильном направлении (то есть, какие пакеты), или если у них есть время, дайте мне пример? Является ли ggplot2 способным создавать графики для дифференциальных уравнений? –

+1

ggplot2 пока не делает 3D-графики, насколько я знаю. В пакете rgl реализована вращающаяся 3D-графика, а пакет решетки и базовый пакет имеют функции pseudo3d, которые позволяют фиксировать отображение точек обзора. Автор deSolve также написал пакет plot3d, который фиксировал графику точки зрения. Я все еще получаю сообщение об ошибке с вашим текущим кодом, потому что R не позволит коду внутри функции «видеть» эти буквы с именами переменных внутри 'parms'. Я видел 3D-векторные поля и параметрическую трехмерную кривую, и даже сделал некоторые из моих –

ответ

1

С вашим текущим примером я не вижу способа создания векторного поля, но я действительно получаю что-то вроде примера, показывающего равновесный сюжет. Я бы назвал его 3D-параметрическим графиком со временем в качестве параметра. Откроется окно X11, и вы можете повернуть его в psuedo-3d sapce, щелкнув мышью по изображению на экране. Фотография rgl.snapshot делает снимок. Я решил масштабировать оси:

require(rgl) 
open3d() 
#------ 
NSOpenGL 
     11 
> lines3d(x=out[, 2]/diff(range(out[, 2])), y=out[, 3]/diff(range(out[, 3])), z=out[, 4]/diff(range(out[, 4]))) 
> axes3d() 
> range(out[, 2]) 
[1] -599.9068 309.3532 
> range(out[, 1]) 
[1] 0 100 
> range(out[, 4]) 
[1] -18.02914 23.64377 
> range(out[, 3]) 
[1] 0.6000 165.0494 
> rgl.snapshot("equil.png") 

enter image description here

Там также scatterplot3d пакет:

require(scatterplot3d); scatterplot3d(out[, 2], out[, 3], out[, 4]) 

enter image description here

+0

Я смог использовать ваш код для создания равновесного графика из моей старой модели (т. Е. Того, который использовался на моих фотографиях), и он точно имитировал. Я попытаюсь прочитать информацию о пакетах этой функции, чтобы добавить ярлыки и многое другое. Как вы могли загрузить снимок rgl на этот сайт? Вы использовали imgur, или есть другой метод? Я нашел сюжет, о котором вы говорили. Их pacakge работает через rgl. Я буду возиться с этим, чтобы попытаться векторный граф. Спасибо большое! –

+0

Как вы думаете, есть ли какие-либо плюсы или минусы между использованием rgl или scatterplot3d? –

+0

Я смог заполнить график, используя dispplot3d, и хочу поблагодарить вас за вашу помощь, это очень ценится. Сплитплоттер3d работал хорошо, и я смог использовать его для проекта, но теперь я пытаюсь работать с примером rgl и openplot, который вы предоставили, только для личного интереса. Глядя на справочное руководство по rgl и open3d, я не могу понять, как модифицировать или редактировать большую часть модели. Например, если бы я хотел добавить имена меток в оси x, y- и z, как бы реализовать это в коде? –

Смежные вопросы