0
votes

GGPLOT2 Ajout d'étiquettes de données au tableau des histogrammes groupés

J'ai une table appelée "année" comme ceci: xxx

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: xxx

Malheureusement, j'ai deux problèmes: 1) Pour une raison quelconque, je reçois le message d'avertissement suivant: Messages d'avertissement: xxx

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.

Est-ce que quelqu'un pourrait m'aider avec ces problèmes?


1 commentaires

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.


3 Réponses :


0
votes

Utilisez simplement position_dodge2 pour réparer les étiquettes et supprimez-vous du ylim pour afficher toutes les données: xxx


0 commentaires

1
votes

problème n ° 1: vous obtenez ce message car la ligne n ° 25 a une valeur pct de 50,6, et vous définissez la limite maximale sur l'axe des Y sur 50.

Problème n ° 2: Utilisation de positionnement_dodge2 dans votre geom_text 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 xxx

 Entrez la description de l'image ici


0 commentaires

2
votes

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")


0 commentaires