Legend ggplot 2.2 Kaldır


250

Bir katmanın efsanesini (pürüzsüz) tutmaya ve diğer (efsanenin) efsanesini kaldırmaya çalışıyorum. Efsaneleri guides(colour = FALSE)ve ile kapatmayı denedim geom_point(aes(color = vs), show.legend = FALSE).

Düzenleme : Bu soru ve cevapları popüler olduğundan, tekrarlanabilir bir örnek sırayla görünüyor:

library(ggplot2)
ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) + 
theme_bw() 

resim açıklamasını buraya girin


5
Minimal tekrarlanabilir bir örnek çok daha basit olacaktır. Uzun kod satırında çok sayıda gereksiz (eldeki soruna) kodun yanı sıra şu anda yazıldığı gibi tamamen tekrarlanamaz gibi görünüyor.
04'te mnel

Yanıtlar:


445

den r yemek kitabı bp sizin ggplot olduğunu:

Belirli bir estetik (dolgu) için efsaneyi kaldırın:

bp + guides(fill=FALSE)

Ölçeği belirtirken de yapılabilir:

bp + scale_fill_discrete(guide=FALSE)

Bu, tüm efsaneleri kaldırır:

bp + theme(legend.position="none")

25
@Alex tarafından yapılan bir yoruma yanıt olarak: Kullanılarak theme_bw()yapılan tanımlara müdahale edebileceğini unutmayın theme(). Kullanırken theme_bw(), diğer tema seçeneklerini değiştirmeden önce grafiğe eklediğinizden emin olun.
fabern

1
ama böyle bir şey yaptığımda bp + theme(legend.position="none") + theme_classic()efsaneler geri geliyor. Peki nasıl kaldırılır?
loveR

3
@loveR önce theme_classic koydu:bp + theme_classic() + theme(legend.position="none")
hipotez

1
Bunun planım üzerinde hiçbir etkisi yoktu. @Tjebo'nun yaklaşımını başarıyla kullandım.
James Hirschorn

80

Bunun başka bir çözümü olabilir:
Kodunuz:

geom_point(aes(..., show.legend = FALSE))

Sen belirtebilirsiniz show.legend parametreyi sonraaes çağrı:

geom_point(aes(...), show.legend = FALSE)

ilgili efsane ortadan kalkmalıdır


3
Bu çok hoş bir yaklaşım. Daha sezgisel.
patL

2
Bu, renkli satırlara açıklama eklemek için geom_text kullandığımda, göstergeden harfleri kaldırmaya çalışan çözümdü. Hiçbir scale_labelemir yoktur (ve bu da mantıklı değildir) ve guide(label = FALSE)aynı zamanda işe yaramadı. Teşekkürler!
Melissa Key

45

Soru ve user3490026 'nın cevabı en iyi arama sonucu olduğu için, OP'nin sorusunu açıkça ele alan bir çözümle birlikte şimdiye kadar yapılan önerilerin tekrarlanabilir bir örneğini ve kısa bir örneğini yaptım.

ggplot2Yapan ve kafa karıştırıcı olabilecek şeylerden biri, belirli efsaneleri aynı değişkenle ilişkilendirildiğinde otomatik olarak karıştırmasıdır. Örneğin factor(gear), bir kez linetypeve bir kez olmak üzere iki kez görünür ve fillbirleşik bir efsaneye yol açar. Aksine,gear aynı muamele görmediği için kendi efsane girişi vardır factor(gear). Şimdiye kadar sunulan çözümler genellikle iyi çalışıyor. Ancak bazen, kılavuzları geçersiz kılmanız gerekebilir. En alttaki örneğime bakın.

# reproducible example:
library(ggplot2)
p <- ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs)) +
geom_point(aes(shape = factor(cyl))) +
geom_line(aes(linetype = factor(gear))) +
geom_smooth(aes(fill = factor(gear), color = gear)) + 
theme_bw() 

resim açıklamasını buraya girin

Tüm efsaneleri kaldır: @ user3490026

p + theme(legend.position = "none")

Tüm efsaneleri kaldır: @duhaime

p + guides(fill = FALSE, color = FALSE, linetype = FALSE, shape = FALSE)

Efsaneleri kapatın: @Tjebo

ggplot(data = mtcars, aes(x = mpg, y = disp, group = gear)) +
geom_point(aes(color = vs), show.legend = FALSE) +
geom_point(aes(shape = factor(cyl)), show.legend = FALSE) +
geom_line(aes(linetype = factor(gear)), show.legend = FALSE) +
geom_smooth(aes(fill = factor(gear), color = gear), show.legend = FALSE) + 
theme_bw() 

Dolguyu, çizgi tipi görünür olacak şekilde kaldırın

p + guides(fill = FALSE)

Scale_fill_ işlevi ile yukarıdaki ile aynı:

p + scale_fill_discrete(guide = FALSE)

Ve şimdi OP'nin talebine olası bir cevap

"bir katmanın efsanesini korumak (pürüzsüz) ve diğer katmanın efsanesini kaldırmak (nokta)"

Ad-hoc post-hoc geçici olarak bazılarını aç

p + guides(fill = guide_legend(override.aes = list(color = NA)), 
           color = FALSE, 
           shape = FALSE)  

resim açıklamasını buraya girin


2
Son grafikteki mavi dolgu renginin grafikte görünmediğini fark ettim, neden emin değilim ...
PatrickT

Tip warnings()Kodunuzu koştu ve' mavi kurdele nedeni (ler) görünmüyor görürsünüz sonra.
markus

@markus: Teşekkürler! Sorun ayrı olduğu için örneği düzenlemekle uğraşmayacağım. Ancak, sehesaplanmadığı zaman için bir efsaneye sahip olmak pek mantıklı değildir. Muhtemelen
github'da

13

Grafiğiniz hem kullanırsa fillve colorestetiği, sen ile efsaneyi kaldırabilirsiniz:

+ guides(fill=FALSE, color=FALSE)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.