如何用任意数据(即非x和y的函数)在R中绘制曲面图
我试图用网格化的x轴和y轴在数据的R中建立一个曲面图。 x轴从1到8变化,而y轴从-4到4变化 以下是绘图的数据:如何用任意数据(即非x和y的函数)在R中绘制曲面图,r,plot,R,Plot,我试图用网格化的x轴和y轴在数据的R中建立一个曲面图。 x轴从1到8变化,而y轴从-4到4变化 以下是绘图的数据: -4 -3 -2 -1 0 1 2 3 4 1 159 144 133 132 138 123 80 28 -22 2 153 135 121 122 160 162 110 50 -7 3 148 126 107 104 161 190 135 67 3 4 145 120 96 92 161 202 149 77 8 5 144 1
-4 -3 -2 -1 0 1 2 3 4
1 159 144 133 132 138 123 80 28 -22
2 153 135 121 122 160 162 110 50 -7
3 148 126 107 104 161 190 135 67 3
4 145 120 96 92 161 202 149 77 8
5 144 117 92 89 161 205 153 80 10
6 145 120 96 92 161 202 149 77 8
7 148 126 107 104 161 190 135 67 3
8 153 135 121 122 160 162 110 50 -7
9 159 144 133 132 138 123 80 28 -22
非常感谢您的帮助。latticeExtra::wireframe或
rgl::persp3d
都可以绘制三维曲面图
z <- as.matrix(read.table(text='-4 -3 -2 -1 0 1 2 3 4
1 159 144 133 132 138 123 80 28 -22
2 153 135 121 122 160 162 110 50 -7
3 148 126 107 104 161 190 135 67 3
4 145 120 96 92 161 202 149 77 8
5 144 117 92 89 161 205 153 80 10
6 145 120 96 92 161 202 149 77 8
7 148 126 107 104 161 190 135 67 3
8 153 135 121 122 160 162 110 50 -7
9 159 144 133 132 138 123 80 28 -22', header=TRUE, check.names=FALSE))
有关如何指定视角的详细信息,请参见线框
或者,rgl
包中的persp3d
可以生成可以用鼠标旋转/缩放的三维曲面
library(rgl)
persp3d(1:9, -4:4, z, col = "lightblue", xlab='x', ylab='y')
你也可以考虑一个热图/平地图:
lattice::levelplot(z, col.regions=terrain.colors, xlab='x', ylab='y',
scales=list(tck=1:0))
编辑 如果要提高绘图的分辨率,可以使用
akima
插值数据
例如:
library(akima)
xyz <- transform(expand.grid(x=as.numeric(rownames(z)),
y=as.numeric(colnames(z))), z=c(z))
z_interp <- interp(xyz$x, xyz$y, xyz$z)
xyz_interp <- transform(expand.grid(x=z_interp$x, y=z_interp$y), z=c(z_interp$z))
wireframe(z ~ x * y, data=xyz_interp, scales=list(arrows=FALSE),
drape=TRUE, col.regions=terrain.colors(10),
at=seq(min(xyz_interp$z), max(xyz_interp$z), len=11))
库(akima)
xyz或者晶格额外::线框
或者rgl::PERP3D
可以绘制3D曲面图
z <- as.matrix(read.table(text='-4 -3 -2 -1 0 1 2 3 4
1 159 144 133 132 138 123 80 28 -22
2 153 135 121 122 160 162 110 50 -7
3 148 126 107 104 161 190 135 67 3
4 145 120 96 92 161 202 149 77 8
5 144 117 92 89 161 205 153 80 10
6 145 120 96 92 161 202 149 77 8
7 148 126 107 104 161 190 135 67 3
8 153 135 121 122 160 162 110 50 -7
9 159 144 133 132 138 123 80 28 -22', header=TRUE, check.names=FALSE))
有关如何指定视角的详细信息,请参见线框
或者,rgl
包中的persp3d
可以生成可以用鼠标旋转/缩放的三维曲面
library(rgl)
persp3d(1:9, -4:4, z, col = "lightblue", xlab='x', ylab='y')
你也可以考虑一个热图/平地图:
lattice::levelplot(z, col.regions=terrain.colors, xlab='x', ylab='y',
scales=list(tck=1:0))
编辑
如果要提高绘图的分辨率,可以使用akima
插值数据
例如:
library(akima)
xyz <- transform(expand.grid(x=as.numeric(rownames(z)),
y=as.numeric(colnames(z))), z=c(z))
z_interp <- interp(xyz$x, xyz$y, xyz$z)
xyz_interp <- transform(expand.grid(x=z_interp$x, y=z_interp$y), z=c(z_interp$z))
wireframe(z ~ x * y, data=xyz_interp, scales=list(arrows=FALSE),
drape=TRUE, col.regions=terrain.colors(10),
at=seq(min(xyz_interp$z), max(xyz_interp$z), len=11))
库(akima)
xyz请把你的名字写下来。同时展示您迄今为止所做的尝试。当人们通过正确设置代码格式和更正打字错误来改进您的帖子内容时,请不要将其替换为原始内容。非常感谢您的改进。我试图让数据看起来像这样,但没能做到。所以这是你们@jbaums做出的非常令人愉快的手势!谢谢@RomanLuštrik,我试过excel图表,结果很好。然而,我无法修改太多,比如添加更多的等高线。正如我所说的,我对R非常陌生,还没有达到讨论任何进展(甚至没有进展)的水平。请发表你的看法。同时展示您迄今为止所做的尝试。当人们通过正确设置代码格式和更正打字错误来改进您的帖子内容时,请不要将其替换为原始内容。非常感谢您的改进。我试图让数据看起来像这样,但没能做到。所以这是你们@jbaums做出的非常令人愉快的手势!谢谢@RomanLuštrik,我试过excel图表,结果很好。然而,我无法修改太多,比如添加更多的等高线。正如我所说的,我对R非常陌生,还没有达到讨论任何进展(甚至没有进展)的水平。非常感谢!我也喜欢热图的想法!但由于我的数据,分辨率似乎太差了。由于缺少更精细的值,即使是曲面图也不美观。我们有没有办法绕过这个问题,创建一个更连续的情节?非常感谢@jbaums!救了我一天!非常感谢!我也喜欢热图的想法!但由于我的数据,分辨率似乎太差了。由于缺少更精细的值,即使是曲面图也不美观。我们有没有办法绕过这个问题,创建一个更连续的情节?非常感谢@jbaums!救了我一天!