J'utilise le jeu de données Soybean à partir du paquet MLBench dans R. P>
Je veux montrer une distribution de fréquence en créant des graphiques à barres simples pour chaque variable (toutes catégoriques). Les parcelles devraient ressembler à ceci: P>
https://www.statmethods.net/graphiques/images/barplot1.jpg p>
Merci d'avance, M p>
3 Réponses :
Si vous souhaitez grapher toutes les variables, vous pouvez utiliser une boucle sur les colnames de votre jeu de données. Utilisez ggplot () code> et la fonction
get () code> pour se concentrer sur le nom de la variable.
library(mlbench)
data(Soybean)
library(ggplot2)
library(dplyr)
for(j in 1:ncol(Soybean)){
var <- colnames(Soybean)[j]
Soybean %>%
ggplot(aes(x = get(var))) +
geom_histogram(stat = 'count') +
labs(x = 'var')
}
Merci pour votre contribution. Cela a bien fonctionné et était exactement ce que je cherchais. Encore une fois, merci beaucoup. Cependant, le temps de calcul était supérieur à la méthode du commentaire ci-dessus.
Utilisation de la base R, vous pouvez obtenir le résultat souhaité avec:
my.barplot.function = function(x){ heights = table(x) barplot(heights, names.arg = levels(x)) } apply(Soybean, 2, my.barplot.function)
Merci pour votre contribution. Cela a très bien fonctionné. Grande entrée, j'apprécie beaucoup votre aide.
@Mlu: Heureux d'entendre que cela a bien fonctionné pour vous. Même si ce n'est pas la meilleure réponse, veuillez envisager de lui donner un upvote si vous avez trouvé le code et le résultat utile pour résoudre votre problème et pour une programmation future :)
Comme alternative, vous pouvez également essayer éditer: Utilisation de gridextra :: Marchangegrob () pour produire un 6 x 6 Agencement de toutes les figures. P> {pcurr} code> pour appliquer un processus
{ggplot2} code> sur chaque colonne des données. J'ai utilisé
aes_string () code> ici afin que les noms de colonne puissent être transmis comme des chaînes au
ggplot code> esthétique.
library(mlbench)
library(purrr)
library(ggplot2)
library(gridExtra)
data("Soybean")
marrangeGrob(
map(
names(Soybean),
~ ggplot(Soybean, aes_string(.x)) +
geom_bar()
),
ncol = 6,
nrow = 6,
top = "Soybean Distribution"
)
Merci pour votre contribution, c'est exactement ce que je cherchais. Cependant, je pensais créer un espace de 6 x 6 terrain, de sorte que je puisse les voir tous en même temps. Y a-t-il un moyen d'intégrer cela dans votre code? Merci d'avance,
J'ai édité la réponse de telle sorte que vous obtenez le complot 6 x 6. J'ai utilisé Gridextra :: Marchangegrob (). Il y a une augmentation du temps de calcul, mais j'espère que ça va.