首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用ggplot的"annotation_raster“并达到R的”内存上限“

使用ggplot的"annotation_raster“并达到R的”内存上限“
EN

Stack Overflow用户
提问于 2012-04-06 16:47:48
回答 1查看 395关注 0票数 1

我正在使用R创建一个房屋的平面图,其中包括以下几层,从底层开始:

  • basemap:是一种建筑平面图的扫描版,我把它放在底层以帮助reading
  • bed:,房子有几十张床,分散在房子的不同房间里,它们根据residents
  • piechart:的特点有不同的颜色,每一张床都有一段顶部,再一次,碎片是根据居民的其他特性创建的,有些床有零碎的,有些没有。

bedpiechart是根据基于basemap创建的shp文件创建的(即我使用Mapwindow创建一个矢量层,导入basemap作为栅格层并将其放在底部,然后逐个绘制床。然后将床的shp文件导入R中,计算床多边形的质心,而质心帮助定位分段)

我使用read.jpegbasemap导入到imagematrix对象,然后在ggplot2 0.9中使用新的annotation_raster函数将basemap放在底层映射层,因为bed层也是基于basemap创建的,bed层完全叠加在basemap层中ggplot2中。

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

我认为这与jpg文件的压缩无关,因为即使我进一步压缩jpg文件,维度也不会改变。但是我不能调整jpg文件的大小,因为我的bed层是基于原始jpg文件的维度创建的。

谁能帮助缩小basemap的图像矩阵的大小,而不改变jpeg的尺寸,或者其他一些技巧来处理R的内存限制?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 18:15:59

我修好了。

我首先创建了一个宽度和高度减半的新basemap图像文件,然后在annotation_raster中执行了以下操作:

代码语言:javascript
运行
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10046489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档