1

我正在使用 R 创建具有如下几层的房屋的平面图,从底层开始:

  • basemap:平面图的扫描版,我把它放在底层以帮助阅读
  • bed:房子有几十张床,分散在房子的不同房间里,根据住户的特点有不同的颜色
  • piechart:每张床上面都有一个饼图,饼图也是根据住户的其他特征创建的,有的床有饼图,有的没有。

bedpiechart是基于基于底图创建的shp文件创建的(即我使用Mapwindow创建矢量图层,将底图作为栅格图层导入并放在底部,然后一张一张地绘制床。床的shp文件然后将其导入R,计算床多边形的质心,该质心有助于定位饼图)

read.jpeg以前是导入basemaptoimagematrix对象,然后用新annotation_raster函数inggplot2 0.9basemap最下面的地图图层,由于bed图层也是基于图层创建的basemap,图层完美bed叠加在图层上。basemapggplot2

我可以毫无问题地创建地图 - 如果basemap足够小(3000 x 3000像素),现在我有一个basemap像素8000+ x 3000+object.size241823624 字节),我在创建 shp 文件时没有意识到 R 内存问题,ggplot可以编译对象如果我annotation_raster禁用了,但 R 一直说我可以在尝试将 xxxMB 包含basemapggplot对象中时分配内存。

我认为这与 jpg 文件的压缩无关,因为即使我进一步压缩 jpg 文件,尺寸也不会改变。但是我无法调整 jpg 文件的大小,因为我的bed图层是根据原始 jpg 文件的尺寸创建的。

basemap任何人都可以在不改变 jpeg 尺寸或其他一些技巧来处理 R 的内存限制的情况下帮助缩小图像矩阵的大小吗?谢谢。

4

1 回答 1

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最初一样。

于 2012-04-06T18:15:59.553 回答