2010-03-02 15 views
16

Par exemple. Supposons que je fais:Comment modifier la taille actuelle de la fenêtre de tracé (en R)

dev.new(width=5, height=4) 
plot(1:20) 

Et maintenant, je veux faire

plot(1:40) 

Mais je veux une plus grande fenêtre pour elle.

Je suppose que la façon de le faire serait (en supposant que je ne veux pas ouvrir une nouvelle fenêtre) pour faire

plot(1:40, width=10, height=4) 

Ce qui bien sûr ne fonctionne pas.

La seule solution que je vois serait d'éteindre la fenêtre et d'en commencer une nouvelle. (Qui mettra fin à mon histoire de traçage)

Y at-il un meilleur moyen?

Merci.

+0

Tal- de votre exemple (augmentation de la largeur de 2x) il semble que vous voulez être en mesure d'augmenter considérablement la zone de la parcelle. S'il s'agit d'une augmentation plus petite de la zone de tracé souhaitée, vous pouvez reculer les quatre marges, par exemple, par (mar = c (3.0, 3.0, 1.5, 1.5)) – doug

+1

Vous souhaitez redimensionner la fenêtre actuelle? – Shane

+0

Une fois la fenêtre ouverte, elle "appartient" au gestionnaire de fenêtres. Je ne suis au courant d'aucun appel qui vous permet de redimensionner et fenêtre déjà ouverte. Vous pouvez tricher et simuler dans le code la «souris active les fenêtres et agrandit» mais cela me semble avoir un mauvais rapport coût/bénéfice. –

Répondre

7

Voici une ma solution à ceci:

resize.win <- function(Width=6, Height=6) 
{ 
     # works for windows 
    dev.off(); # dev.new(width=6, height=6) 
    windows(record=TRUE, width=Width, height=Height) 
} 
resize.win(5,5) 
plot(rnorm(100)) 
resize.win(10,10) 
plot(rnorm(100)) 
+5

Cela ne fonctionnerait que pour Windows. Aucun autre système n'a de fonction 'windows' comme Brian Ripley a essayé de vous l'expliquer. –

+0

Salut Dirk, Merci d'avoir mentionné cela (aussi remarquer que je l'ai écrit dans le code). Mais je suppose que c'est quelque chose aussi ... Best, Tal –

+0

Qu'en est-il de quartz() - fonctionne sous OSX;)? – gawbul

13

Certaines solution de contournement pourrait être plutôt que d'utiliser dev.new() fonction R utiliser cette fonction qui devrait fonctionner sur la plate-forme:

dev.new <- function(width = 7, height = 7) 
{ platform <- sessionInfo()$platform if (grepl("linux",platform)) 
{ x11(width=width, height=height) } 
else if (grepl("pc",platform)) 
{ windows(width=width, height=height) } 
else if (grepl("apple", platform)) 
{ quartz(width=width, height=height) } } 
Questions connexes