2012-04-06 53 views
1

我使用R鍵創建一所房子的幾層像下面佈局規劃,從底層開始:使用ggplot的「annotation_raster」並達成R「原則內存天花板」

  • basemap:的掃描版本我把它放在底層,以幫助閱讀
  • bed佈局規劃:房子有幾十牀,散落在房子的不同房間,他們根據居民的特點,不同的顏色
  • piechart :每張牀都有一個頂部的圓形圖,a根據居民的其他一些特徵創造出這些餅圖,有些牀上有餅圖,有些則沒有。

bedpiechart都是基於SHP文件中創建的基礎上創建的底圖(即我用Mapwindow的創建矢量層,導入底圖的柵格圖層,然後把它在底部,然後繪製牀一個接一個。然後將牀SHP文件導入到R,牀多邊形質心計算,並且質心有助於定位扇形圖)

我用read.jpeg導入basemapimagematrix對象,然後使用新的annotation_raster功能ggplot2 0.9basemap置於底層地圖層,因爲bed圖層也是基於basemap創建的,bed圖層與ggplot2完美疊加在basemap圖層上。

我可以毫無問題創建地圖 - 如果basemap足夠(3000 x 3000像素)小,現在我的8000+ x 3000+像素(object.size 241823624字節)一basemap,我沒有意識到將R內存問題,當我創建如果我禁用了annotation_raster,則可以編譯shp文件,ggplot對象,但是當我嘗試將basemap包含到ggplot對象中時,R總是說我可以用xxxMB分配內存。

我認爲這與壓縮jpg文件無關,因爲即使我進一步壓縮jpg文件,尺寸也不會改變。但我無法調整jpg文件的大小,因爲我的bed圖層是基於原始jpg文件的尺寸創建的。

任何人都可以幫助縮小basemap的imagematrix的大小,而不改變JPEG的維度,或一些其他技巧來處理R的內存限制?謝謝。

+0

我不知道如何幫助,但我想知道這個項目是關於什麼... – 2012-04-06 17:11:39

回答

0

我修好了。

我第一次創造了寬度和高度的新basemap圖像文件減半,然後在annotation_raster我做了以下內容:

chart <- chart + annotation_raster(db$temp.basemap, 
            xmin=0, 
            xmax=basemap.xlength*2, # I stretched the image in R 
            ymin=0, 
            ymax=basemap.ylength*2) # I stretched the image in R 

現在的地圖可以的r內存限制內進行編譯,缺點我能想到的是圖像質量的降低,但這是可以忍受的,因爲它最初是8000 x 3000