R ggplot - 无法分配大向量

时间:2017-10-13 18:48:16

标签: r ggplot2 out-of-memory geom-raster

我试图绘制一个相对较小的数据集,但我无法让它向我展示情节。它不断给出错误import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; public static String getAsFormattedJsonString(Object object) { ObjectMapper mapper = new ObjectMapper(); try { return mapper.writerWithDefaultPrettyPrinter().writeValueAsString(object); } catch (JsonProcessingException e) { e.printStackTrace(); } return ""; } 。这对我来说没有多大意义,因为数据集相当小。

Error: cannot allocate vector of size 9.7 Gb

我是如何策划的。

> nrow(locs)
[1] 130
> head(locs)
       STATION AVGTRANGE     LAT     LONG
1: USC00286979  22.13333 40.6971 -75.2042
2: USC00360022  21.33333 40.5361 -79.8152
3: USC00360132  24.37037 40.5227 -78.3694
4: USC00360140  19.80000 40.4949 -78.4667
5: USC00360147  22.36667 41.3585 -77.9262
6: USC00360457  20.68000 40.8209 -76.4983

以下是gg <- ggplot(data = locs, aes(x = LONG, y = LAT)) + geom_raster(aes(fill=AVGTRANGE), interpolate=TRUE) gg # can't allocate here 我的数据。

dput

1 个答案:

答案 0 :(得分:2)

我不确定您使用geom_raster尝试实现的目标,因为您的数据似乎不符合目的。

考虑点图的输出:

gg <- ggplot(data = locs, aes(x = LONG, y = LAT, colour = AVGTRANGE)) +
  geom_point()
  #geom_raster(aes(fill=AVGTRANGE), interpolate=TRUE)
gg 

data(faithfuld)
gg <- ggplot(faithfuld, aes(waiting, eruptions, colour = density)) +
  geom_point()
  #geom_raster(aes(fill = density), interpolate = TRUE)
gg

我还尝试了geom_contour您的数据,但它不起作用:

gg <- ggplot(data = locs, aes(x = LONG, y = LAT, z = AVGTRANGE)) +
  geom_contour()
gg 

更新

我检查了geom_raster的代码,并且它试图创建巨型图的原因是图的分辨率基于点之间的最小距离。由于数据中的某些点非常接近,因此矩阵的大小非常大。

如果你将LAT和LONG转为2位数代码可以正常工作。

locs$LAT <- round(locs$LAT, 0)
locs$LONG <- round(locs$LONG, 0)

enter image description here