2012-08-17 10 views
1

我是GKS試圖使用R圖形的圖形編程人員。我有一個涉及到變革中的R兩個問題:R中的查看和幾何變換

  1. 我想知道是否有建立在R A觀察管道,其中一個可以映射在世界座標中的窗口等效[WC]在設備中的視座標[dc]。例如,我可以指定一個將(wcxmin,wcxmax,wcymin,wcymax)窗口映射到(vpxmin,vpxmax,vpymin,vpymax)其中wc爲(1000,-50,40,90)和vp爲(0 ,800,0,600)。目標是所有圖形計算都在wc中完成,但圖形引擎將其渲染爲dc。在這種情況下,它會適當縮放座標,並將x軸翻轉爲wcxmin> wcxmax。

  2. 是否存在等價的圖形段,然後可以通過變換矩陣對[圖形,移位,旋轉和可能剪切]進行變換。

我相信我缺少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

您是否試圖爲R創建自己的繪圖設備?什麼讓你不使用現有的圖形引擎? – Gregor 2012-08-17 18:55:45

+0

@shujaa,我不想創建一個新的繪圖設備。請參閱我添加到帖子中的示例代碼來說明情節循環問題。你能推薦一些圖形引擎,可能有我正在尋找的功能? – 2012-08-17 19:24:25

+1

'gridExtra'包可以做到這一點。請參閱[這裏](https://stat.ethz.ch/pipermail/r-help/2011-June/280949.html)。 – Justin 2012-08-17 19:31:24

回答

0

'網格'包一直都在這樣做。視口在X和Y方向(有時爲Z)都表示爲[0,1],調用函數convertXconvertY以從用戶座標移至網格座標。請輸入help(grid)以獲取設施的完整列表。使用線框或水平圖時也表示了第三個維度。通過齊次座標轉換是通過4×4矩陣完成的,該矩陣存儲爲作爲current.transform(current.viewport())訪問的項目。通過查看trans3d中的代碼,可以獲得關於如何在R中處理這些轉換矩陣的更多詳細信息。我看到@nograpes已經指出grid::pushViewport函數中的高級旋轉工具。

+0

感謝您的指點。我一直缺少的是視口調用的xscale和yscale參數,它允許您將用戶座標空間映射到標準化單位(1x1)空間。 – 2012-08-22 19:50:29