2017-10-13 8 views
1

Je suis en train de tracer un objet rasterLayer sur un terrain composé de deux chiffres en utilisant screenR: tracer une image raster à l'intérieur de l'écran() ne fonctionne pas

Première - un scénario de travail quand nous avons une seule image:

library(raster) 
f <- system.file("external/test.grd", package="raster") 
rst <- raster(f) 

plot(rst) 
points(180000, 332000, col="red", pch=19) 

Tout semble bien et l'image ressemble à ceci:

image1

Howe ver quand je divise l'écran en deux et essayer de tracer le même chiffre en utilisant seulement la moitié de la région de traçage, je reçois le texte suivant:

library(raster) 
f <- system.file("external/test.grd", package="raster") 
rst <- raster(f) 
class(rst) 

figs <- rbind(c(0, 0.5, 0, 1), # Screen1 
       c(0.5, 1, 0, 1) # Screen2 
      ) 
screenIDs <- split.screen(figs) 

screen(screenIDs[1]) 
plot(rst) 
points(180000, 332000, col="red", pch=19) 

image2

Il semble que l'image principale de la forme de trame est étant tiré correctement. Cependant, pour une raison quelconque, il capture alors la totalité de la région de traçage et y ajoute des lignes de démarcation. Après que les appels suivants à l'intrigue (comme points) ajouter des points sur le chiffre entier plutôt que de rester dans la première moitié de celui-ci.

Toutes idées pour résoudre ou contourner ceci sont les plus appréciées.

+0

ne suis pas sûr de la fonctionnalité 'de split.screen' mais n'utilisant' par (mfrow = c (1,2)) ' fournir une option alternative? – timfaber

+0

@timfaber par (mfrow = c (1,2)) fonctionne. Mais malheureusement, j'ai une mise en page complexe (deux moitiés ici sont juste pour un exemple reproductible) et doit utiliser «screen». –

Répondre

2

Vous pouvez utiliser layout au lieu de split.screen. Démonstration ici, comme dans votre exemple, avec une disposition simple de seulement 1 rangée de deux panneaux de taille égale. Pour savoir comment obtenir mises en page plus complexes, jetez un oeil à ?layout

layout(matrix(c(1,2), 1, 2, byrow = TRUE)) 
plot(rst) 
points(180000, 332000, col="red", pch=19) 

plot(1:10,1:10) # a dummy plot to put in the right hand panel 

enter image description here

+0

+1. Merci d'avoir pris le temps de répondre. Je connais la mise en page, mais je voudrais vraiment utiliser l'écran pour cela. En ce moment, étudier une méthode différente pour tracer raster en utilisant 'image()' qui semble fonctionner mieux avec l'écran, mais ne peut pas obtenir la bonne résolution ... –