观看& R中的几何变换

时间:2012-08-17 18:28:02

标签: r

我是GKS试图使用R图形的图形程序员。我有两个与R中的转换有关的问题:

  1. 我想知道是否有相当于在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。

  2. 是否有相当于图形的片段可以通过变换矩阵进行变换[sclae,shift,rotate,and possible shear]。

  3. 我确信我在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度。

1 个答案:

答案 0 :(得分:0)

'grid'包一直这样做。视口在X和Y方向(有时是Z)中表示为[0,1],并且调用函数convertXconvertY以从用户坐标移动到网格坐标。输入help(grid)以获取完整的设施列表。使用线框或水平图时也会表示第三个维度。通过齐次坐标进行的变换是通过4×4矩阵完成的,这些矩阵存储为current.transform( current.viewport())访问的项目。通过查看trans3d中的代码,您可以获得有关如何在R中处理这些转换矩阵的更多详细信息。我看到@nograpes已经指出了grid::pushViewport函数中的高级旋转工具。