2010-12-10 70 views
15

En R, j'ai rencontré une erreur en cours d'exécution comme suit:« Erreur dans plot.new(): marges de chiffre trop grand »

> png("p3_sa_para.png", 4, 2) 
> par(mfrow=c(1,2)) 
> plot(c(1:10), ylab="Beta",xlab="Iteration") 
Error in plot.new() : figure margins too large 
> plot(c(1:10), ylab="Gamma",xlab="Iteration") 
Error in plot.new() : figure margins too large 
> dev.off() 
X11cairo 
     2 

Je l'ai déjà fait de la taille de l'image petite pour être 4 par 2, pourquoi il se plaint encore des "marges de chiffres trop grandes"? Comment puis-je résoudre ce problème avec png?

Il est étrange que si je change png en pdf, alors cela fonctionnera. Je me demande aussi pourquoi?

Merci pour votre intérêt!

+6

vous vous épargneriez beaucoup de tracas si vous lisiez l'aide pour les fonctions R que vous utilisez. Ce que 'width' et' height' sont sur un périphérique 'png' est clairement indiqué dans'? Png' –

+5

@gavin Je ne suis pas d'accord, j'ai rencontré le problème exact et la première chose que je cherchais est de l'aide pour l'intrigue, puis de l'aide pour , et après toutes les informations inutiles, je suis allé pour png dernier. L'aide n'est bonne que lorsque vous avez une idée d'où vous devriez regarder. –

+2

@Tg la chose logique à faire dans une situation où vous obtenez une erreur est de le décomposer. Si l'intrigue fonctionne sans 'png()', nous savons que le problème réside dans 'png()'. Si enlever png() ne fait aucune différence, nous avons réduit la portée du problème. Il ne devrait pas y avoir de réel besoin de lire de multiples fichiers d'aide etc pour des choses comme ça, * si * vous adoptez une approche logique pour résoudre le problème, isoler où le problème est et ensuite lire le fichier d'aide approprié. Êtes-vous en désaccord sur la nécessité de lire l'aide ou autre chose? –

Répondre

23

La fonction png() utilise pixels pas pouces, alors essayez quelque chose comme

png("p3_sa_para.png", 640, 480) 

Et pour répondre à votre deuxième question, oui, pdf() utilise pouces parce format graphiques vectoriels n'a aucune notion de pixels. Les fonctions help(png) et help(pdf) sont vos amis.

7

Le problème peut simplement provenir de l'utilisation d'un certain IDE. J'utilisais Rstudio et j'ai eu beaucoup d'erreurs. Mon code exact fonctionnait très bien dans la console.

3

Ceci est un problème commun pour le tracé spécialement lorsque vous utilisez IDE qui a une place pour générer et vous montrant l'intrigue, pensait que c'est une question générale et il y a une logique derrière tout cela: quand vous dites R à tracer Quelque chose, R d'abord regarder les données et ensuite regarde la zone qu'il a à sa disposition afin qu'il puisse faire le traçage.

Le .png() et des commandes similaires:

Dans votre cas, vous a donné la parcelle une zone de pixels 4 par 2 pour tracer, de sorte que vous pouvez le résoudre en augmentant la surface dans une taille qui peut tenir votre intrigue. (Comme Dirk Eddelbuettel mentioned)

En cas d'IDE

Ceci est beaucoup plus simple dans la plupart des cas, il suffit d'augmenter la zone de tracé en faisant glisser les marges, puis ré-exécuter votre code (fermer tout par() si vous en avez ouvert un auparavant et en créer un nouveau) enter image description here