J'ai une table appelée "année" comme ceci: données représente que les utilisateurs disposent d'une application nominale de Google Play Store au fil des ans. Ils l'évaluent en donnant 1 (mauvais) à 5 étoiles.
J'essaie de faire une carte qui montre la part des étoiles par star du niveau et une année à l'aide de ce code: p> Malheureusement, j'ai deux problèmes:
1) Pour une raison quelconque, je reçois le message d'avertissement suivant:
Messages d'avertissement: p> signifiant que les données pour 2020, 4 étoiles sont manquantes, même si elle devrait 13.1
2) mes étiquettes sont partout où j'aimerais qu'ils soient positionnés au-dessus de la colonne correspondante du graphique. P> Est-ce que quelqu'un pourrait m'aider avec ces problèmes? P> P>
3 Réponses :
Utilisez simplement p> p> position_dodge2 code> pour réparer les étiquettes et supprimez-vous du
ylim code> pour afficher toutes les données:
problème n ° 1: vous obtenez ce message car la ligne n ° 25 a une valeur Problème n ° 2: Utilisation de pct code> de 50,6, et vous définissez la limite maximale sur l'axe des Y sur 50.
positionnement_dodge2 code> dans votre
geom_text code> fera la gamme d'étiquettes, et je pense que l'ajout d'un peu d'espace au-dessus de la barre le rend plus lisible pour que j'ai aussi ajouté
vjust = -1 code> p>
Vous devez définir le regroupement correctement pour que l'insouchement soit opérationnel. Au lieu d'utiliser ylim code>, qui coupe l'une de vos barres, nous pouvons désactiver l'expansion de l'axe qui semble mieux pour les barres jusqu'à 0. (vous devrez peut-être utiliser
ylim code> Avec une valeur plus élevée pour vous assurer que toutes les étiquettes sont imprimées.)
ggplot(year, aes(as.factor(Stars), pct)) +
geom_col(aes(fill = as.factor(Year)), position = "dodge") +
geom_text(
aes(label = round(pct, digits = 1), group = interaction(Stars, Year)),
position = position_dodge(0.9), size = 3, fontface = "bold", vjust = 0
) +
scale_fill_manual(values=c("#05668D", "#028090", "#00A896", "#02C39A", "#4ecdc4", "#F0F3BD")) +
scale_y_continuous(expand = c(0, 0)) +
theme(
panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"),
plot.title = element_text(hjust = 0.5)
) +
labs(title = "Share of stars", x = "Share of stars (in %)", y = "Stars", fill = "Year")
1) Vous avez une observation de 50,6, mais vous avez également mis en place une limite sur l'axe de Y de 50. De sorte que l'observation tombe en dehors de la plage, est supprimée et vous obtenez l'avertissement.