2011-09-30 24 views
9

gglot2 numaralı çizimde açıklama eklemek için geom_text kullanıyorum ve mutlak yerine göreli konumlamayı kullanmak istiyorum. Yani, x ve y ekseni sınırlarına bakılmaksızın (0.5, 0.5) pozisyonunun ölü merkez olması istiyorum. Mümkün mü? X ve y sınırlarına sahip olsaydım, elbette göreceli bir pozisyonu mutlak olana dönüştürebilirdim. Bir komplodan bunları çıkarmak mümkün mü?Geoglotte ggplot2'deki göreceli konumlandırma?

cevap

5

Aralığınızdaki verilerin aralığını biliyorsanız, varsayılan olarak 0,05 katsayılı bir genişletme katsayısı kullanan ggplot gerçeği kullanarak "true" x ve y limitlerini hesaplayabilirsiniz, böylece grafiğin uzantıları uzar gerçek veri değerlerinin biraz üzerinde.

expand = c(mult, add) kullanarak ölçekleri belirtirken çoğaltıcı ve katıksal genişletme faktörü belirtebilir ve burada mult çoğaltıcı faktördür ve bu şekilde devam eder. Yani varsayılan ayar expand = c(0,0.05)'dur.

+0

Evet hakkına Şimdi veri aralıkları ile uzun yoldan gidiyorum. Gerçi genişleme faktörünü belirtmeyi bilmiyordum. Çok teşekkürler. – c00kiemonster

+3

Bunun nasıl çalıştığını anlamadım. Bu problemle karşı karşıyayım, belki de basit bir örnekle biraz daha fazla açıklama yapabilir misiniz? – Eduardo

1

Evet, x ve y sınırlarını bir ggplot2-plottan çıkarmak mümkündür. Bu fonksiyon x'i ve y bir ggplot2 arsa nesnenin merkezinin koordinatı:

center.position <- function(plot) { 
xpos <- (ggplot_build(plot)$panel$ranges[[1]]$x.range[2]-ggplot_build(plot)$panel$ranges[[1]]$x.range[1])/2+ggplot_build(plot)$panel$ranges[[1]]$x.range[1] 
ypos <- (ggplot_build(plot)$panel$ranges[[1]]$y.range[2]-ggplot_build(plot)$panel$ranges[[1]]$y.range[1])/2+ggplot_build(plot)$panel$ranges[[1]]$y.range[1] 
return(data.frame(x=xpos,y=ypos)) 
} 

senin x-Veri POSIXct-formatında ise, yine dönüştürmek de gerek:

center.coords <- center.position(myplot) 
myplot <- myplot + annotate("text",x=as.POSIXct(center.coords$x,origin="1970-01-01"), y=center.coords$y, label="X") 
+1

ggplot_build (arsa) 'nın yapısı bu arada değişti. 2.1.1'de ggplot_build (arsa) $ layout $ panel_ranges [[1]] $ x.range [2] 'gibi bir şeydir. –