Aide pour la fonction plot.new

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Anicet Gervais KOUAME
Messages : 1
Enregistré le : 03 Fév 2018, 15:45

Aide pour la fonction plot.new

Messagepar Anicet Gervais KOUAME » 18 Fév 2018, 18:16

[b][/b]Bonjour à tous.

A partir de l'aide acquise sur internet, j'ai écrit et exécuté le script suivant pour une analyse:

lm(log(mean.ep)~espece*(ht+d+hmax+dmax+expo),data=data1c) -> res
step(res)
anova(res)
plot(res)


graf.ep <- function(data) {
graf=data
splist=unique(graf$espece)
par(mfrow=c(4,2))
for (sp in splist) {
with(graf[graf$espece==sp,],plot(d,mean.ep,frame.plot=F,main=sp,log="y",pch="."))
with(graf[graf$espece==sp,],text(d,mean.ep,labels=indiv))
}
}


Jusque-là pas de message d'erreur, mais quand j'ajoute les lignes suivantes:

graf.ep(data1c)
par(mfrow=c(1,1))


# on me met comme résultat:

Error in plot.new() : figure margins too large

Lorsque je visualise le traceback, les étapes suivantes sont notées mais je n'y comprends rien

8.
plot.new()
7.
plot.default(d, mean.ep, frame.plot = F, main = sp, log = "y",
pch = ".")
6.
plot(d, mean.ep, frame.plot = F, main = sp, log = "y", pch = ".")
5.
eval(substitute(expr), data, enclos = parent.frame())
4.
eval(substitute(expr), data, enclos = parent.frame())
3.
with.default(graf[graf$espece == sp, ], plot(d, mean.ep, frame.plot = F,
main = sp, log = "y", pch = "."))
2.
with(graf[graf$espece == sp, ], plot(d, mean.ep, frame.plot = F,
main = sp, log = "y", pch = "."))
1.
graf.ep(data1c)

Je vous prie de bien vouloir m'assister. Merci d'avance

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Aide pour la fonction plot.new

Messagepar Logez Maxime » 19 Fév 2018, 08:27

Bonjour,

Ca vient du fait que ta fonction cherche à créer une fenêtre graphique partitionnée en quatre lignes et deux colonnes. Quand tu fais ça la place disponible pour le graph est petite si tu ne réduis pas la place allouer pour les marges (titres, titres secondaires, légendes des axes, etc.). Dans la fonction par il faut que tu réduises la taille des marges, par exemple par(mfrow = c(4,2), mar = c(2,1,2,0.5)). Pour ce qui concerne les paramètres graphiques voir la fiche de Jean Lobry, qu'on ne conseillera jamais assez.

Sinon pour ce genre de graph multifacette, le package ggplot2 ou lattice (je préfère de loin le premier) sont à regarder.

Code : Tout sélectionner

ggplot(graf, aes(d, mean.ep)) + geom_point() + scale_y_log10() + facet_wrap(~ espece, nrow = 4, ncol = 2)

Cordialement,
Maxime


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité