作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 R 复制类似下图的内容,可能使用 ggplot(尽管我怀疑这是可能的,因为 AFAIK,它没有 3D 功能)。我拥有的数据通常是栅格包中的栅格文件,但我可以将其转换为最合适的格式。
剧情取自:“2013 年气候变化:物理科学基础。第一工作组对政府间气候变化专门委员会第五次评估报告的贡献”,图 1.14。我不知道是哪个软件制作了那个情节。
我想唯一的方法就是使用 lattice::cloud(线框)或类似的东西?我似乎找不到任何方法来强制线框使用条形图而不是曲面图;此外,基于海上高度的着色,网格保持水平,可能是不可能的..
最佳答案
我抽空看了看这个。最后我采用了以下方法(链接的 R 代码):
感谢评论中为我指明正确方向的人。
我在保存文件时仍然遇到问题,但这是另一个问题的 Material 。
代码来自 pastebin :
library(raster)
library(rgl)
r <- raster("topo12.nc", varname="topo") #Read file
cols <- terrain.colors(3100) #Define colors
binplot.3d <- function(x,y,z,alpha=1,topcol="#ff0000",sidecol="#aaaaaa"){ #Binplotting function
save <- par3d(skipRedraw=TRUE)
on.exit(par3d(save))
x1<-c(rep(c(x[1],x[2],x[2],x[1]),3),rep(x[1],4),rep(x[2],4))
z1<-c(rep(0,4),rep(c(0,0,z,z),4))
y1<-c(y[1],y[1],y[2],y[2],rep(y[1],4),rep(y[2],4),rep(c(y[1],y[2],y[2],y[1]),2))
x2<-c(rep(c(x[1],x[1],x[2],x[2]),2),rep(c(x[1],x[2],rep(x[1],3),rep(x[2],3)),2))
z2<-c(rep(c(0,z),4),rep(0,8),rep(z,8) )
y2<-c(rep(y[1],4),rep(y[2],4),rep(c(rep(y[1],3),rep(y[2],3),y[1],y[2]),2) )
rgl.quads(x1,z1,y1,col=rep(sidecol,each=4),alpha=alpha)
rgl.quads(c(x[1],x[2],x[2],x[1]),rep(z,4),c(y[1],y[1],y[2],y[2]),
col=rep(topcol,each=4),alpha=1)
rgl.lines(x2,z2,y2,col="#000000")
}
cat("Row ( of", dim(r)[1],"):")
for (row in 1:dim(r)[1]) { #Plotting loop
for (col in 1:dim(r)[2]) {
if (round(r[row, col]) < 1) {
binplot.3d(c(col-1,col), c(row-1,row), r[row, col]/500, alpha=1, topcol="cadetblue3")
} else {
binplot.3d(c(col-1,col), c(row-1,row), r[row, col]/500, alpha=1, topcol=cols[round(r[row, col])])
# cat(round(r[row, col]), "\t")
}
}
cat(row, "")
}
关于r - 绘制网格的 3D 地形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28384999/
我正在尝试生成与此类似的立体 map : 我想做的是添加: 坐标 格线 既可以在基数R中使用,也可以在ggplot2中使用。任何帮助表示赞赏。 我到目前为止的尝试 library(rgdal) lib
我想使用 R 复制类似下图的内容,可能使用 ggplot(尽管我怀疑这是可能的,因为 AFAIK,它没有 3D 功能)。我拥有的数据通常是栅格包中的栅格文件,但我可以将其转换为最合适的格式。 剧情取自
我是一名优秀的程序员,十分优秀!