Bonjour.
Quand tu as un paramètre comme un nom de variable à intégrer dans {ggplot2}, une solution est de remplacer la fonction aes par aes_string qui attend des arguments sous forme de textes.
Dans ta solution 1, ça donnerait
aes_string(x="Date",y=nm[i])
Par contre je ne vois pas vraiment à quoi sert de faire une fonction. Est-ce que
1 2 3 4 5
| nm = names(base1)
for (i in 2:4) {
print(ggplot(base1, aes_string(x="Date",y=nm[i]) ) + geom_line()+
geom_smooth())
} |
n'est pas suffisant ?
Encore une autre solution, sans boucle : 1) transformer tes données avec tidyr::pivot_longer pour que les colonnes 2 à 4 deviennent autant de lignes ; tu aurais donc 3 fois plus de lignes qu'au départ dans ton nouveau data.frame. Puis 2) tu fais un seul ggplot sur ces données, avec un facet_wrap sur la colonne contenant l'ancien nom de variable. Ainsi tu génères tes trois graphiques, qui peuvent être sur la même image, avec des axes en commun (ou pas) et donc comparables.
Partager