2010-06-01 15 views
44

Ben, arsanın altındaki açıklamalarla bir ggplot2 çizimi oluşturmaya çalışıyorum.Bir efsaneyi ggplot2'de taşıma veya konumlandırma

ggplot2 kitabı p 112'de diyor "Efsanelerin konumu ve gerekçesi tema ayarı legend.position tarafından kontrol ediliyor ve değer sağ, sol, üst, alt, yok (gösterge yok) veya sayısal olabilir pozisyon".

Aşağıdaki kod çalışır ("doğru" olduğundan, varsayılan değerdir) ve aynı zamanda "hiçbiri" le lejant konumuyla çalışır, ancak "sol", "üst", "alt", hepsi "Hata" ile başarısız olur. grid.Call.graphics içinde ("L_setviewport", pvp, DOĞRU): viewport olmayan sonlu konumu ve/veya boyutu"

library(ggplot2) 
(myDat <- data.frame(cbind(VarX=10:1, VarY=runif(10)), 
    Descrip=sample(LETTERS[1:3], 10, replace=TRUE))) 
qplot(VarX,VarY, data=myDat, shape=Descrip) + 
    opts(legend.position="right") 

Neyi yanlış yapıyorum? Bir efsanenin yeniden konumlandırılması inanılmaz derecede yaygın olmalı, bu yüzden benim olduğunu düşünüyorum.

Ne yazık ki ben gerçekten gerçekten bu yaz çözmeyi umuyoruz ggplot2 bir hata var:> 0.9.3 (opts kullanımdan kaldırıldı)

theme(legend.position = "bottom") 

Eski sürüm sürümlerinde

cevap

39

.

Güncelleme:

opts(legend.position = "left") karıştığı hata ggplot2 en güncel sürümünü kullanıyor giderildi. Ayrıca, sürüm 0.9.0, guide_legend ve guide_colorbar'un tanıtımını gördü, bu da efsanenin içindeki öğelerin görünümü ve konumlandırması üzerinde daha iyi bir kontrole izin verdi. Örneğin, yetenek efsane öğeleri için satır ve sütun sayısını belirtir.

+0

bu (legend.position = "alt") theme_update 'şimdi yapmadı mı '? –

3

Her zaman lejandı manuel olarak yerleştirebilirsiniz - ancak etiket hala istiflenmiş/dikey olduğundan, çirkin görünüyor. Gerçekten Hadley bu :-) ggplot2 daha yeni sürümlerinde

p <- qplot(VarX,VarY, data=myDat, shape=Descrip) + 
opts(legend.position=c(.5,0.9),plot.margin = unit(c(6,0,0,0), "lines")) 
+9

' opts() 'şimdi kullanımdan kaldırılmıştır - bunun yerine 'guide_legend()' kullanın. Http://docs.ggplot2.org/0.9.2.1/guide_legend.html Tema ile – Andrew

0

düzeltmek için zaman bulur umut sen + theme(legend.position='bottom') kullanabilirsiniz.

enter image description here

qplot(VarX,VarY, data=myDat, shape=Descrip) + 
    theme(legend.position='bottom') 

daha efsaneler iyilik Cookbook for R - Legends bakınız.

Bir yoruma yanıt olarak, theme_update(), bir ggplotun ortasında çağrılırsa (+ theme_update()'da olduğu gibi, yalnızca belirli zamanlarda başlatılmaz. Yalnızca belirli bir arsa yerine aktif temayı da değiştirir. Bu:. farkın sonraki araziler de altta Efsaneye getirememe olmak yukarıdaki gibi sonuçlarıyla

theme_update(legend.position='bottom') 
qplot(VarX,VarY, data=myDat, shape=Descrip) 

+0

(gösterge.konum = "alt") efsanem sol altta görünürken, örneğinizde ortada (benim önceki yıllarda yaptığım gibi). Bunun hakkında bir şey değişti mi ve yine ortada nasıl elde edeceğini biliyor musun? – Tingolfin