2016-04-08 11 views
0

Ben heightDetails() ile bir ggplot efsanesi yüksekliğini öğrenmek için çalışıyorum toplamı ile çalışmaz, ama "absolute.units" (UseMethod içinde hatayıheightDetails birimlerinin

Hatası olsun): için geçerli yöntemin absolute.units 'sınıf "birim"

Örnek bir nesneye uygulanır:

g_legend<-function(a.gplot){ 
    tmp <- ggplot_gtable(ggplot_build(a.gplot)) 
    leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box") 
    legend <- tmp$grobs[[leg]] 
    return(legend) 
} 
: ekstraksiyon için, fonksiyon g_legend here önerilen kullanılan 0

yüzden efsane almak için

testlegend <- g_legend(testplot) 

kullanmak, basit bir barplot

testplot <- ggplot(mtcars, aes(x=as.factor(gear), fill=as.factor(gear))) + geom_bar() 

var varsayalım. is.grob (testlegend) bunun gerçekten bir grob olduğunu ve grid.draw (testlegend) 'in iyi çalıştığını öne sürer. Ama heightDetails (testlegend) bana yukarıda belirtilen istisnayı veriyor.

Tahminimce, testlegend $ heights birim ve yükseklik toplamını içerir.Detaylar bununla başa çıkamaz. Sebebi bu mu? Eğer değilse, neden çalışmıyor? Ve efsanenin yüksekliğini almak için alternatif bir yol nedir?

cevap

1

Eski bir ızgara/R/gtable sürümü kullandığınızı düşünüyorum; güncelleme hatayı düzeltmelidir. Bu, mutlak birimin neden burada kullanıldığına dair bir ipucu yoktur ve benim tecrübemde yanlış bir cevap veriyor. Yükseklikleri çağırmak için, yükseklik yüksekliklerini belirtmekten daha güvenilir bulabilirsiniz.

+0

RStudio, tüm paketlerin güncellendiğini söylese de, çalışmadı. Ama gtable yüksekliklerin toplanması benim amacım için mükemmel çalışıyor. Teşekkürler! –