2 votes

Comment résoudre le problème de chevauchement du texte de l'axe dans ggplot lors de l'utilisation de scale_x_continuous

Je trace un diagramme en barres des mots les plus fréquents et de leur contribution par ordre de thèmes. Afin de classer les mots dans chaque thème par leur contribution, j'ai besoin de créer une variable d'ordre et de la remplacer plus tard par de nouvelles étiquettes.

Mon code est ci-dessous :

library(ggplot2)    
dat = data.frame(topic = paste('Sujet', rep(1:2, each=3)),
               term = c('pomme', 'orange', 'pêche', 'raisin', 'fruit', 'melon'),
               order = rep(1:3, 2),
               contribution = c(0.01, 0.05, 0.07, 0.02, 0.05, 0.08))

dat %>%
      ggplot(aes(x=order, y=contribution, fill=topic))+
      geom_bar(stat='identity', width=0.5)+
      facet_wrap(~topic, scales = 'free')+
      scale_x_continuous(
            breaks = dat$order,
            labels = dat$term,
            expand = c(0,0)
          ) +
      coord_flip()+
      theme(legend.position = "none")

Étonnamment, j'ai constaté que le texte de mon axe des y se chevauchait avec d'autres textes. Est-ce que quelqu'un sait pourquoi ? J'ai passé des heures mais je n'ai pas pu comprendre pourquoi cela se produit. Merci beaucoup !

0voto

dylanjm Points 1492

C'est un problème avec le fait qu'il y a plusieurs fruits par commande et que les deux sujets sont étiquetés avec la même commande (c'est-à-dire "pomme" et "raisin"), je suggère d'utiliser library(forcats) pour tracer par fruit et les réorganiser en fonction de la commande. Voici le code ci-dessous :

library(ggplot2)    
library(dplyr)
library(forcats)

dat = data.frame(topic = paste('Sujet', rep(1:2, each=3)),
                 term = c('pomme', 'orange', 'pêche', 'raisin', 'fruit', 'pastèque'),
                 order = rep(1:3, 2),
                 contribution = c(0.01, 0.05, 0.07, 0.02, 0.05, 0.08))

dat %>%
    ggplot(aes(x = fct_reorder(term, order, max), y = contribution, fill = topic)) + 
    geom_bar(stat = 'identity') + 
    facet_wrap(~ topic, scales = "free") + 
    coord_flip()

Créé le 2019-07-01 par le paquet reprex (v0.2.1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X