我是一名尝试使用 R 图形的 GKS 时代的图形程序员。我有两个与 R 中的转换有关的问题:
我想知道是否有在 R 中构建查看管道的等价物,可以将世界坐标 [wc] 中的窗口映射到设备坐标 [dc] 中的视口。例如,我可以指定一个转换 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 和可能的剪切]。
我确信我在 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度。