作者phil5566 (5566)
看板R_Language
标题[问题] 多变数函数中如何固定某些变数做图/画线?
时间Fri Feb 10 00:54:48 2017
[问题类型]:
程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
[软体熟悉度]:
新手
[问题叙述]:
小弟现在有20笔data,假设叫T,和自己定义的函数surlikelihood(x,t),
其中x包含变数(x1,x2,x3),t是输入的data,
把这20笔data代入surlikelihood(x,t),即surlikelihood(x,T)
整理成有3个变数的函数,即surlikelihood=f(x1,x2,x3),0<x1<1,0<x2,0<x3,
想对这个函数作图,要在四度空间才办的到,所以我想固定x3=5之下,
去画surlikelihood=f(x1,x2,5)的三维度立体图,该怎麽做?
固定x2=5,x3=5之下,去画surlikelihood=f(x1,5,5)的二维度曲线,又该怎麽做?
范例附上20笔data和surlikelihood函数,还请版上高手和先进们给小弟指教,
谢谢~
[程式范例]:
http://pastebin.com/EEgXsWHA
[环境叙述]:
R x64 3.3.1
[关键字]:
高维度
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.224.1.196
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1486659291.A.337.html
1F:推 Edster: contour/image/persp就可以画三维了,要四维就是persp 02/10 08:52
2F:→ Edster: 设定每个网格的颜色成为第四维 02/10 08:53
3F:→ Edster: 回到你的标题,你的资料存成array就可以处里多维度的结构 02/10 08:54
4F:推 Edster: 你的code看了有点难过 顺手改了 02/10 10:55
6F:推 Edster: 然後你自己把资料改成array,就可以省去t[t[,4]==i,2]这段 02/10 11:06
7F:→ phil5566: 谢谢E大回答,您说的把资料改成array,是否就是 02/11 00:47
8F:→ phil5566: array(T,c(20,9))?但我不太懂为何可以省去 02/11 00:48
9F:→ phil5566: "t[t[,4]==i,2]这段"?还有我试了一下image好像是把data 02/11 00:50
12F:→ phil5566: 的立体图形,不知是否有误解您的意思,能否给个code范例? 02/11 01:03
13F:推 Edster: 要看你丢进去的资料,例如你选到一个整列都是同一个数值 02/11 11:32
14F:→ Edster: 的当然会画成这样,你要研究你自己的资料结构怎麽喂进去 02/11 11:32
15F:→ Edster: 。 02/11 11:32
16F:→ Edster: 你对array结构理解有误,多看范例吧。 02/11 11:32
17F:→ phil5566: 可是我想画的是函数图形,和data结构有什麽关系?不懂? 02/11 13:09
18F:推 Edster: 不然你拿什麽画图? 不就是资料? 02/11 19:55
19F:→ phil5566: 看了范例persp比较符合我的需求,但它是定出x,y和f 02/12 01:50
20F:→ phil5566: 假设x1代表x,x2代表y,那他的f就相当於我的 02/12 01:53
21F:→ phil5566: surlikelihood(a,T),a<-c(x1,x2,5) 02/12 01:55
22F:→ phil5566: x1 <- seq(-10, 10, length= 30) 02/12 02:21
23F:→ phil5566: x2 <- x1 02/12 02:22
24F:→ phil5566: a<-c(x1,x2,5) 02/12 02:22
25F:→ phil5566: 前面有说x1,x2范围,但先假设没范围限制下来作图 02/12 02:24
26F:→ phil5566: f <-function(x,y) surlikelihood(a,T) 02/12 02:25
27F:→ phil5566: wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww 02/12 02:28
28F:→ phil5566: 上面这一行我只是想表示原本surlikelihood代入data T和 02/12 02:30
29F:→ phil5566: 固定x3=5之下,只剩x(x1)和y(x2)两个变数的函数 02/12 02:32
30F:→ phil5566: 但这样写应该是错的,不知道这一块该怎麽处理才好? 02/12 02:33
31F:→ phil5566: 之後再接z <- outer(x, y, f) 02/12 02:38
32F:→ phil5566: z[is.na(z)] <- 1 02/12 02:38
33F:→ phil5566: persp(x, y, z, theta = 30, phi = 30, expand = 0.5, c 02/12 02:39
34F:→ phil5566: ol = "lightblue") 02/12 02:39
35F:→ phil5566: 应该可以画出立体图......只是 02/12 02:40
36F:→ phil5566: f <-function(x,y) surlikelihood(a,T)这行该怎麽改才对 02/12 02:41
37F:→ phil5566: ? 02/12 02:41