楼主: 林有二鱼
17721 9

[问答] 用R画等高线图 [推广有奖]

  • 0关注
  • 0粉丝

小学生

78%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
30 点
帖子
1
精华
0
在线时间
17 小时
注册时间
2018-1-11
最后登录
2018-12-16

楼主
林有二鱼 发表于 2018-9-8 11:26:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
> x <- seq(-pi, pi, length = 50)
> y <- x
> f <- outer(x, y, function(x, y)cos(y)/(1+x^2))
> contour(x, y, f)
> contour(x, y, f, nlevels = 45)
> fa <- (f-t(f))/2
如何理解f和fa呢,这里用outer函数输出的f是什么啊?
希望大神能指点指点
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:等高线 contour Levels Level Tour

沙发
woodhaha 发表于 2018-9-9 01:15:17 来自手机
contour是把第三维的f值画到x-y平面,形成等高线图,在x-y平面上看就是相同的f值会在一个圈内,形成像年轮一样的结构。这里是指把x,y值代人cos(y)/(1+x^2))公式得到对应的f矩阵值,相当于外积。可理解为x,y在第三维f对应的所有值。fa 就好理解了,t是translocation矩阵转置,行和列兑换,兑换后维度相同采能做矩阵加减法。你要补点线性代数,知道矩阵内积和外积是什么东东!
已有 1 人评分论坛币 收起 理由
cheetahfly + 10 奖励积极上传好的资料

总评分: 论坛币 + 10   查看全部评分

藤椅
woodhaha 发表于 2018-9-9 07:50:27 来自手机
matlab 代码

X = -pi:0.1:pi;
Y = X;
[X,Y] = meshgrid(X,Y);
f = cos(Y)./(1+X.^2);
meshc(X,Y,f);
fa = (Z-Z\')/2; meshc(X,Y,fa);

试试R代码 x <- seq(-pi, pi, length = 50)
y <- x
f <- outer(x, y, function(x, y)cos(y)/(1+x^2))
contour(x, y, f)
contour(x, y, f, nlevels = 45)
fa <- (f-t(f))/2
p1 <- plot_ly(x=x, y = y, z = f) %>% add_surface()
p2 <-plot_ly(x=x, y = y, z = fa) %>% add_surface()
还是Matlab简单 image20180909075028.jpg image20180909075028.jpg

板凳
woodhaha 发表于 2018-9-9 07:53:51 来自手机
用plotly画3D图,google  了解一下
install.packages(plotly)
library(plotly)

报纸
cheetahfly 在职认证  发表于 2018-9-10 13:15:33
“还是Matlab简单?”
不存在的

y <- x <- seq(-pi, pi, length = 50)
f <- outer(x, y, function(x, y) cos(y) / (1 + x ^ 2))
lattice::wireframe(f, xlab = "x", ylab = "y", drape = TRUE)
001.png

地板
cheetahfly 在职认证  发表于 2018-9-10 13:22:25
或者可以将下面的代码copy后在电脑上执行:
  1. panel.3d.contour <- function(x, y, z, rot.mat, distance, nlevels = 20, zlim.scaled, ...) {
  2.     add.line <- trellis.par.get("add.line")
  3.     panel.3dwire(x, y, z, rot.mat, distance, zlim.scaled = zlim.scaled, ...)
  4.     clines <- contourLines(x, y, matrix(z, nrow = length(x), byrow = TRUE), nlevels = nlevels)
  5.     for (ll in clines) {
  6.         m <- ltransform3dto3d(rbind(ll$x, ll$y, zlim.scaled[2]), rot.mat, distance)
  7.         panel.lines(m[1,], m[2,], col = add.line$col, lty = add.line$lty, lwd = add.line$lwd)
  8.     }
  9. }
复制代码
library(lattice)
wireframe(f, xlab = "x", ylab = "y", panel.3d.wireframe = "panel.3d.contour", drape = TRUE)
002.png

7
woodhaha 发表于 2018-9-10 19:23:17 来自手机
又学了一招

8
tulipsliu 在职认证  发表于 2019-8-3 20:44:38
厉害啊 论坛高手真多 会R的也好多啊

9
balaclava123 发表于 2021-9-10 19:38:27
cheetahfly 发表于 2018-9-10 13:22
或者可以将下面的代码copy后在电脑上执行:
library(lattice)
wireframe(f, xlab = "x", ylab = "y", pan ...
哈哈哈哈battle起来了

10
pingguzh 发表于 2022-1-5 22:21:22
很好的学术范围啊

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-29 03:34