2013-08-05 66 views
7

我的rgl設備的全屏/非全屏有問題。rgl設備的設置大小

目前我使用[R 3.00

我繪製persp3d圖(庫RGL)到我的設備,它在一個很小的窗口打開:

將R代碼:

persp3d(x, y, z, theta=50, phi=25, expand=0.75, col=red, 
     ticktype="detailed", xlab="", ylab="", zlab="",axes=FALSE) 
axes3d(c('x--','z')) 

axis3d(edge='y+-',at =c(1,500,1000,1500,2000,2320), 
labels =rownames(fd)[c(1,500,1000,1500,2000,2320)]) 

哪看起來是這樣的:

sc

I N ow旋轉它並將單個png文件保存到我的驅動器。問題是,png文件太小?我想使用LaTex和\animategraphics命令將它們放入一張紙中,但它是相似的(不是尖銳的)。

如果我點擊rgl設備中的全屏圖標,以便R圖更大,這確實有幫助,一切都可以工作。問題是,它周圍有太多空白。有了這個上面,下面,左側和右側的白色空間,我不能將它包含在LaTex中,因爲它不適合,因爲它的大尺寸(寬度,高度)。我有200個PNG文件,所以用油漆手動去除白色空間並不是一件好工作。

小圖片看起來是這樣的:

sc11

出現以下情況,如果您在放大(這是做什麼乳膠,當我把它放到我的論文,它增加了圖片,截圖是從我LaTex的文件相同的圖片,一個稍微不同的角度,但問題保持不變)。

sc22

你看,它看起來pixely(不好)。此外,您已經可以看到帶有太多空白的大文件的問題:上面有一些空白的小圖片已經破壞了我的標題。

那麼我該如何解決這個問題呢?我怎麼能告訴R使用全屏幕圖,但周圍沒有太多的空白空間?當我點擊全屏並保存這些圖片時,一切都很好,除了它周圍的空白處。

下面是與它周圍太多的空白PNG文件(在這個截圖下面有沒有白色的空間,但是當我使用正確的變焦它的存在):

sc2

一名注意:這是我用來保存png文件的R代碼:

M <- par3d("userMatrix") 
movie3d(spin3d(rpm=3), duration=20,dir="C:/test/movie", clean=FALSE) 
play3d(spin3d(rpm=3), duration=20) 

回答

3

您可以使用par3d檢查RGL設備的狀態。 「空白」由「windowRect」值控制。隨着顯示器尺寸的增加,這些值會自動增加;

> par3d("windowRect") 
[1] 100 100 356 378 
> par3d("windowRect") # made the window have roughly 4 times the area 
[1] 137 0 744 544 

您還可以指定windowRect的角落是什麼。

?par3d 

如果你想在視窗較大的物體時,rgl.viewpoint功能可以放大這應該給你的控制,避免兩個「空白問題,標題重疊。

。數量較少化妝對象出現較大

rgl.viewpoint( zoom = .5) 
+0

感謝您的幫助,但它並沒有幫助我。在手冊中說,windowRect給了我「顯示窗口的左,上,右和底部(以像素爲單位)。」我試圖將它設置爲5,5,5,5(小邊界的小值)與例如par3d(「usersMatrix」,windowRect = c(5,5,5,5)),但它不起作用(無圖片)。看來,這只是給我的大小,好像我會用鼠標增加它的大小?所以如果我設置更大的數字,我又有同樣的問題。所以這不是一個解決方案,因爲我仍然有空白? –

+1

需要有足夠的「空白」才能旋轉對象。除非對象是球形的,否則這意味着當某些視角顯示對象時會出現一些空白。如果您想刪除所有空白,您可能需要將其導出到圖像並進行編輯。嘗試'par3d(「windowRect」= c(0,0,1200,1200))''。我認爲最後兩個值需要很大。 –

+0

感謝您的回答,但是:白色空間不需要旋轉?即使沒有空白空間,它仍然可以旋轉,或者說,一個較小的白色寄宿生(一些小寄宿生沒關係)。當我使用par3d(「windowRect」= c(161,23,876,691))時,這會給出正確的大小,但問題是空間仍然太多?如果我減少數字或改變它,圖形本身(表面的大小)也會發生變化,所以不僅白色空間減少,而且還會出現完整的圖形。導出到PNG手動刪除空白200次? –

0

這足以設置r3dDefaults:

r3dDefaults$windowRect <- c(0,50, 800, 800) 
plot3d(mdatapc, col=kmeanspc.cluster, size = 10)  
3

使用par3d(windowRect = c(20,30,800,800))