我是GKS试图使用R图形的图形程序员。我有两个与R中的转换有关的问题:
我想知道是否有相当于在R中构建查看管道的地方,可以将世界坐标[wc]中的窗口映射到设备坐标[dc]中的视口。例如,我可以指定一个transofrmation t,它将(wcxmin,wcxmax,wcymin,wcymax)的窗口映射到(vpxmin,vpxmax,vpymin,vpymax),其中wc是(1000,-50,40,90),vp是(0 ,800,0,600)。目标是所有图形计算都在wc中完成,但图形引擎将其渲染为dc。在这种情况下,它将适当地缩放坐标并且还将x轴翻转为wcxmin>。 wcxmax。
是否有相当于图形的片段可以通过变换矩阵进行变换[sclae,shift,rotate,and possible shear]。
我确信我在R图形中遗漏了一些非常基本的东西。我可以在没有任何问题的情况下在SVG中成功构建这样的转换。我一直在寻找像grid,lattice,ggplot2这样的包,但是还没有取得多大进展。
感谢。
以下是我尝试做的一些示例代码:
distn<-rnorm(100)
distw<-rweibull(100, shape=2)
dret<-stack(list(norm=distn, weib=distw))
n<-0
for (idx in levels(dret$ind)) {
pct<-dret[dret$ind == idx,c('values')]
# scale and shift the data
pct<-(pct-min(pct))/(max(pct) - min(pct))
if (n == 0) {
# top left
par(fig=c(0,0.5,0.5,1))
limx<-c(0,1)
} else {
# bottom right
par(fig=c(0.5,1,0,0.5), new=TRUE)
limx<-c(1,0)
}
fp<-density(pct)
sfx<-fp$x
sfy<-(fp$y-min(fp$y))/(max(fp$y)-min(fp$y))
sortpct<-sort(pct)
ecdfpct<-(1:length(sortpct))/length(sortpct)
plot(sortpct, ecdfpct, xlim=limx, type="l", col="green")
lines(sfx, sfy, xlim=limx, type="l", col="red")
n<-n+1
}
我想将右下方的图形旋转-90度。
答案 0 :(得分:0)
'grid'包一直这样做。视口在X和Y方向(有时是Z)中表示为[0,1],并且调用函数convertX
和convertY
以从用户坐标移动到网格坐标。输入help(grid)
以获取完整的设施列表。使用线框或水平图时也会表示第三个维度。通过齐次坐标进行的变换是通过4×4矩阵完成的,这些矩阵存储为current.transform( current.viewport())
访问的项目。通过查看trans3d
中的代码,您可以获得有关如何在R中处理这些转换矩阵的更多详细信息。我看到@nograpes已经指出了grid::pushViewport
函数中的高级旋转工具。