Je voudrais créer une version propre d'un filtre de diffusion d'étiquettes de texte dans GGPLot2. L'objectif est de représenter visuellement les valeurs croissantes associées à environ 25 éléments. J'utilise déjà "positionnement", mais je me demande si je peux faire mieux.
Voici quelques données simulées:
title <- rep("A Really Rather Long Text Label", 25)
value <- runif(25, 1,10)
spacing <- seq(1:25)
df <- data.frame(title, value, spacing, stringsAsFactors = FALSE)
Et voici le code qui génère le graphique:
library(ggplot2)
myplot <- ggplot(data=df, aes(x=spacing, y=value, label = title)) +
geom_text(aes(colour = value),
size = 2.5, fontface = "bold",
vjust = 0,
position = position_jitter(width=5, height=0)) +
theme_bw() +
scale_x_continuous(limits = c(-5, 30))+
scale_colour_gradient(low = "#6BAED6", high = "#08306B") +
theme(axis.title.x = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
legend.position = "none")
myplot
Il y a beaucoup d'espace pour tout ce texte dans un graphique de taille raisonnable - tant que le texte est libre de passer aussi loin que possible horizontalement! Je ne veux pas gêner verticalement, car le point est de montrer la valeur Y associée à chaque étiquette de texte.
Le graphique sort légèrement différemment chaque fois que vous exécutez la commande ggplot - et parfois, les résultats gigantesques sont meilleurs que d'autres fois. Mais je n'ai pas trouvé de façon d'empêcher systématiquement les étiquettes de se chevaucher.
Je vous serais reconnaissant de toute suggestion sur la façon de nettoyer le positionnement horizontal du texte sans avoir à déplacer des objets individuels manuellement. Je serais également heureux d'entendre d'autres conseils sur la manière d'améliorer ce type de représentation visuelle.
Regardez le package FField
install.packages("FField", type = "source")
install.packages("ggplot2")
install.packages("gridExtra")
library(FField)
FFieldPtRepDemo()
(de cet article https://stats.stackexchange.com/a/62856 )