J'ai un tracé où l'axe des x est un facteur dont les étiquettes sont longues. Bien que ce ne soit probablement pas une visualisation idéale, pour l'instant, je voudrais simplement faire pivoter ces étiquettes pour qu'elles soient verticales. J'ai compris cette partie avec le code ci-dessous, mais comme vous pouvez le voir, les étiquettes ne sont pas totalement visibles.
data(diamonds)
diamonds$cut <- paste("Super Dee-Duper",as.character(diamonds$cut))
q <- qplot(cut,carat,data=diamonds,geom="boxplot")
q + opts(axis.text.x=theme_text(angle=-90))
q + theme(axis.text.x=element_text(angle = -90, hjust = 0))
theme(axis.text.x=element_text(angle = 90, vjust = 0.5))
. Depuis ggplot2 0.9.3.1, cela semble être la solution.q + theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))
EST CELUI QUI FONCTIONNE ACTUELLEMENT.theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))
donne de bons résultatsPour rendre le texte sur les étiquettes de graduation entièrement visible et lu dans la même direction que l'étiquette de l'axe y, changez la dernière ligne en
la source
Utilisation
coord_flip()
Dans Ch 3.9 de R pour Data Science , Wickham et Grolemund répondent à cette question exacte:
la source
Je voudrais fournir une solution alternative, une solution robuste similaire à ce que je suis sur le point de proposer était requise dans la dernière version de ggtern , depuis l'introduction de la fonction de rotation du canevas.
Fondamentalement, vous devez déterminer les positions relatives à l'aide de la trigonométrie, en créant une fonction qui renvoie un
element_text
objet, un angle (c.-à-d. Degrés) et un positionnement (c.-à-d. L'un des x, y, en haut ou à droite) donnés.Franchement, à mon avis, je pense qu'une option "auto" devrait être mise à disposition dans
ggplot2
les argumentshjust
etvjust
, quand on spécifie l'angle, de toute façon, permet de montrer comment cela fonctionne.Ce qui produit ce qui suit:
la source
rads = (-angle - positions[[ position ]])*pi/180
produit de meilleurs placements. Notez le signe moins supplémentaire avant l'angle. Merci pour le code quand même :)Le paquet ggpubr propose un raccourci qui fait la bonne chose par défaut (aligner le texte à droite, aligner la zone de texte au milieu à cocher):
Créé le 2018-11-06 par le package reprex (v0.2.1)
Trouvé avec une recherche GitHub pour les noms d'arguments pertinents: https://github.com/search?l=R&q=element_text+angle+90+vjust+org%3Acran&type=Code
la source
Alternativement,
ggplot 3.3.0
fournitguide_axis(n.dodge = 2)
(commeguide
argument àscale_..
ou commex
argument àguides
) pour surmonter le problème de sur-tracé en esquivant les étiquettes verticalement. Cela fonctionne assez bien dans ce cas:la source
Pour obtenir des libellés x tick lisibles sans dépendances supplémentaires, vous souhaitez utiliser:
Cela fait pivoter les étiquettes de graduation de 90 ° dans le sens antihoraire et les aligne verticalement à leur extrémité (
hjust = 1
) et leurs centres horizontalement avec la graduation correspondante (vjust = 0.5
).Exemple complet:
Notez que les paramètres de justification verticale / horizontale
vjust
/hjust
deelement_text
sont relatifs au texte. Par conséquent,vjust
est responsable de l' alignement horizontal .Sans
vjust = 0.5
cela, cela ressemblerait à ceci:Sans
hjust = 1
cela, cela ressemblerait à ceci:Si pour certains (filaire) raison pour laquelle vous vouliez tourner la tique étiquettes 90 ° dans le sens horaire ( de telle sorte qu'ils peuvent être lus à partir de la gauche) , vous devez utiliser:
q + theme(axis.text.x = element_text(angle = -90, vjust = 0.5, hjust = -1))
.Tout cela a déjà été discuté dans les commentaires de cette réponse mais je reviens à cette question si souvent, que je veux une réponse dont je peux simplement copier sans lire les commentaires.
la source
Une alternative à
coord_flip()
est d'utiliser leggstance
package. L'avantage est qu'il facilite la combinaison des graphiques avec d'autres types de graphiques et vous pouvez, peut-être plus important encore, définir des rapports d'échelle fixes pour votre système de coordonnées .Créé le 2020-03-11 par le package reprex (v0.3.0)
la source