2012-04-06 7 views
1

I R bin mit einem Grundriss eines Hauses mit mehreren Schichten wie unten zu schaffen, von der unteren Schicht beginnen:ggplot des „annotation_raster“ mit und erreichte R „Speicher Obergrenze“

  • basemap: eine gescannte Version der Grundriss, das ich es an der unteren Schicht legen die Lese
  • bed zu unterstützen: das Haus haben mehrere Dutzend Betten, in verschiedenen Räumen des Hauses verstreut, sie haben unterschiedliche Farben basierend auf den Eigenschaften der Bewohner
  • piechart : Jedes Bett hat ein Kreisdiagramm von oben, a Die Piecharts werden basierend auf den anderen Eigenschaften der Bewohner erstellt, einige Betten haben Piecharts, andere nicht.

Die bed und piechart wurden auf der SHP-Datei erstellt basierend erstellt auf der Basiskarte basiert (dh I verwenden MapWindow die eine Vektorebene erstellen, um die Basiskarte als Rasterschicht importieren und am Boden setzt, dann die Betten zeichnen eines nach dem anderen. die Datei Bett shp dann in R importiert wird, wird das Bett Polygone Schwerpunkt berechnet und Schwerpunkt hilft den Kreisdiagrammen)

I read.jpeg das basemap-imagematrix Objekt zu importieren, verwendet zu positionieren, dann die neuen annotation_raster verwenden Funktion in ggplot2 0.9, um die basemap in der untersten Kartenebene, seit der bed Schicht wird basierend auf der basemap auch erstellt, die bed Schicht überlagert auf der Schicht perfekt in ggplot2.

Ich kann die Karte problemlos erstellen - wenn die basemap klein genug ist (3000 x 3000 Pixel), jetzt habe ich eine basemap von 8000+ x 3000+ Pixeln (object.size 241.823.624 Bytes), die ich von dem R-Speicher Problem nicht bewusst, als ich die Schaffung Die Shp-Datei, das ggplot Objekt kann kompiliert werden, wenn ich die annotation_raster deaktiviert habe, aber R sagt, dass ich Speicher mit xxxMB zuweisen kann, wenn ich versuche, die basemap in das Objekt ggplot aufzunehmen.

Ich denke, das hat nichts mit der Komprimierung der JPG-Dateien zu tun, da die Dimension nicht geändert wird, auch wenn ich die JPG-Datei weiter komprimiere. Aber ich kann die Größe der JPG-Datei nicht ändern, da mein Layer bed basierend auf der Dimension der ursprünglichen JPG-Datei erstellt wird.

Kann jemand helfen, die Größe der basemap Bildmatrix zu verkleinern, ohne die Dimension des JPEG zu ändern, oder einige andere Tricks, um die Speicherbeschränkung des R zu behandeln? Vielen Dank.

+0

Ich habe keine Ahnung, wie ich helfen kann, aber ich möchte wissen, worum es bei diesem Projekt geht ... –

Antwort

0

Ich reparierte es.

ich zum ersten Mal eine neue basemap Bilddatei mit Breite und Höhe halbiert erstellt, dann in der annotation_raster tat ich folgendes:

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 

Nun ist die Karte innerhalb von R Speichergrenze kompiliert werden, der Nachteil ich denken kann, von ist die Verringerung der Bildqualität, aber das ist erträglich, wie es ursprünglich 8000 x 3000 war.