je post ici car je recontre un problème en faisant des barplot dans R et que je n'ai pu trouver réponse à ma question après recherche sur le net, dans la documentation R et après divers essai.
Le problème que je rencontre est que quand je fais un barplot depuis une matrice (3 colonnes et 15+rows), je rencontre un problèmes. En effet, les différentes valeur sont censé se stack par colonnes, hors seule la valeur de la première ligne pour chaques colonnes est représentée.
De plus, lorsque j'essaie de faire le même barplot depuis une autre matrice du même genre, je ne rencontre pas ce problème.
Je représente ici les matrice et le code que j'exécute. Je rencontre le problème avec la matrice 1 mais pas avec la matrice 2.
Merci d'avance pour votre aide/idées
Matrice 1:
[,1] [,2] [,3]
[1,] 3417151.00 2487377.76 NA
[2,] NA NA 736250.87
[3,] 303437.00 NA NA
[4,] 4561176.92 5452659.97 5678608.64
[5,] 362864.00 NA 970946.19
[6,] 157534.20 400711.00 1426459.50
[7,] 672237.00 2457074.43 3030440.77
[8,] NA 2355.95 NA
[9,] 1162878.15 1174595.81 1224077.84
[10,] 5186079.27 3479700.86 4687268.53
[11,] 60426.67 31397.63 47588.95
[12,] 1805354.00 2141498.51 2099223.63
[13,] 1479388.50 547585.50 NA
[14,] 4239065.00 4888770.59 1566657.96
[15,] 2464755.36 3101935.34 2326889.50
[16,] 567454.89 2104123.30 2177168.84
[17,] 297300.00 NA NA
[18,] 1522662.50 607517.43 3312874.20
C'est parce que tu "empiles" des valeurs et des NA, et barplot() n'aime pas ça... Je ne sais pas pourquoi (et barplot() n'accepte pas le paramètre na.rm=TRUE), mais la fonction ne se comporte pas bien avec les NA, qu'on préfèrerait qu'elle ignore simplement. C'est pour ça que la 3e barre n'apparaît pas : la colonne commence par une ligne "NA"... Et pour les colonnes 1 et 2, il n'y a que la 1ère valeur qui est affichée car la 2e est "NA" ==> ça "saute" tout le reste. Fais le test : en remplaçant ces NA par des valeurs, tu obtiens bien tes barres empilées.
Pour régler le problème, tu dois passer par une matrice intermédiaire dans laquelle tu remplaces les NA par 0. Ex :
mat2 = matrix(ncol = 3, nrow = 18)
for (i in 1:NCOL(mat))
{
for (j in 1:NROW(mat))
{
mat2[j,i] = mat[j,i]
if (is.na(mat2[j,i])) mat2[j,i] = 0
}
}
barplot(mat2)
Au passage, ça vaudrait le coup de faire la même chose avec ta 2e matrice parce que je ne suis pas persuadé que les barplots obtenus soient corrects ! (pas le même nombre de lignes que de valeurs...)
J'avais entre temps trouver le problèmes en chipotant et en remplaçant les NA par des 0 en utilisant la fonction replace.
[R]Problème barplot R
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.