2010-11-10 4 views
1

J'ai créé des entrées à deux niveaux sur les axes X qui ont tendance à bien fonctionner. Le seul problème est que lorsque mon axe des ordonnées, proportion, est proche de un, ces entrées d'axe se déversent sur la zone de la carte. Lorsque j'utilise vjust pour modifier manuellement leur position verticale, une partie de chaque entrée est masquée par la limite de la carte.Correction d'un débordement du texte de l'axe des x dans ggplot2

Toutes les suggestions sur la façon de créer des limites de graphique qui s'ajustent de manière dynamique pour prendre en compte les grandes valeurs de l'axe y et le texte intégral de chaque entrée (sans s'exécuter sur le graphique).

Jetez un oeil à l'exemple suivant:

library(ggplot2) 

GroupType <- rep(c("American","European"),2) 
Treatment <- c(rep("Smurf",2),rep("OompaLoompa",2)) 
Proportion <- rep(1,length(GroupType)) 
PopulationTotal <- rep(2,length(GroupType)) 

sampleData <- as.data.frame(cbind(GroupType,Treatment,Proportion,PopulationTotal)) 

hist_cut <- ggplot(sampleData, aes(x=GroupType, y=Proportion, fill=Treatment, stat="identity")) 

chartCall<-expression(print(hist_cut + geom_bar(position="dodge") + scale_x_discrete(breaks = NA) + 
geom_text(aes(label = paste(as.character(GroupType),"\n[N=",PopulationTotal,"]",sep=""),y=-0.02),size=4) + labs(x="",y="",fill="") 
)) 

dev.new(width = 860, height = 450) 
eval(chartCall) 

Toute réflexion sur la façon dont je peux corriger le texte bâclé axe x?

Un grand merci à l'avance, Aaron

Répondre

2

Malheureusement vous devez gérer l'axe y vous-même - il n'y a actuellement aucun moyen pour ggplot2 de savoir combien d'espace supplémentaire dont vous avez besoin parce que l'espace physique nécessaire dépend de la taille de la parcelle. Utilisez, par exemple, expand_limits(y = -0.1) pour budgétiser un peu d'espace supplémentaire pour le texte.

+0

Très bien, merci pour le conseil, Hadley. Au moins cela m'aide à éliminer une solution possible! – Aaron

Questions connexes