eksenler, efsaneler vb. olmadan ggplot2 çizimi


139

Tüm (png) görüntüleme bölgesini dolduran bir komplo oluşturmak için biyoiletkenin hexbin'ini (ki yapabilirim) kullanmak istiyorum - eksen yok, etiket yok, arka plan yok, nuthin yok.


1
Bir hexbin grafiği oluşturmak ve onu bir görüntü düzenleyicisinde kırpmak daha kolay olmaz mıydı?
— joran

3
deneyintheme_void()
— Brian D

Yanıtlar:


182

Chase'in cevabındaki yorumuma göre, bu şeylerin çoğunu kullanarak kaldırabilirsiniz element_blank:

dat <- data.frame(x=runif(10),y=runif(10))

p <- ggplot(dat, aes(x=x, y=y)) + 
        geom_point() +
        scale_x_continuous(expand=c(0,0)) + 
        scale_y_continuous(expand=c(0,0))   

p + theme(axis.line=element_blank(),axis.text.x=element_blank(),
          axis.text.y=element_blank(),axis.ticks=element_blank(),
          axis.title.x=element_blank(),
          axis.title.y=element_blank(),legend.position="none",
          panel.background=element_blank(),panel.border=element_blank(),panel.grid.major=element_blank(),
          panel.grid.minor=element_blank(),plot.background=element_blank())

Bunu kaydettiğimde ortaya çıkan .png'nin kenarında hala küçük bir kenar boşluğu var gibi görünüyor. Belki birileri bile bu bileşenin nasıl kaldırılacağını bilir.

(Tarihi not: bu yana ggplot2 sürümü 0.9.2, optskullanımdan kaldırıldı yerine kullanın. theme()Ve değiştirme theme_blank()ile element_blank().)


1
Çok teşekkürler! Benzer bir çözümü groups.google.com/group/ggplot2/browse_thread/thread/…
— user1320487

Geçerken yorum: Bazı durumlarda, muhtemelen bir yerde geçici bir hata theme(axis.ticks=element_blank())olarak işe yaramaz theme(axis.ticks.x=element_blank())(kendi tema setim var, sonra geçersiz kılmaya çalışıyorum: sadece axis.ticks.xve axis.ticks.yişi yapıyorum.)
— PatrickT

106

Ynt: temayı vs'ye değiştirme (tembel insanlar için):

theme(axis.line=element_blank(),
      axis.text.x=element_blank(),
      axis.text.y=element_blank(),
      axis.ticks=element_blank(),
      axis.title.x=element_blank(),
      axis.title.y=element_blank(),
      legend.position="none",
      panel.background=element_blank(),
      panel.border=element_blank(),
      panel.grid.major=element_blank(),
      panel.grid.minor=element_blank(),
      plot.background=element_blank())

59

Güncel cevaplar eksik veya verimsizdir. İşte (belki de) sonuca ulaşmanın en kısa yolu (kullanarak theme_void():

data(diamonds) # Data example
ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) +
      theme_void() + theme(legend.position="none")

Sonuç:

resim açıklamasını buraya girin


Sadece ortadan kaldırarak ilgilenen varsa etiketleri , labs(x="", y="")hile yapar:

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + 
      labs(x="", y="")

ggplot(data = diamonds, mapping = aes(x = clarity)) + geom_bar(aes(fill = cut)) + theme_void() + theme(legend.position="none", panel.background = element_rect(fill="grey80"), plot.background = element_rect(fill="red"))% 100 geçersiz olmadığını söylüyor
— baptiste

Laboratuvarlar (x = "", y = "") eksenleri kaldırmaz, sadece etiketleri çıkarır.
— miratrix

@miratrix özür dilerim, hatam. Güncellenmiş.
— luchonacho

5
@luchonacho labs(x="",y="")Aslında başlıklar olduğu için eksen başlıklarını boşluk bırakır, sadece işaretsizdirler. Eksen başlıklarını ve alanlarını kaldırmak için kullanmak daha iyidir+ theme(axis.title = element_blank())
— Didzis Elferts

6
labs(x = NULL)veya xlab(NULL)başka yollardır.
— PatrickT

42
'opts' is deprecated.

içinde ggplot2 >= 0.9.2kullanılmak

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

6
Henüz düzenleme ayrıcalıklarına sahip olmadığınızı anlıyorum, ancak güncellenmesi gereken diğer ggplot2 yanıtlarımı fark ederseniz re: opts () bir düzenleme önermekten çekinmeyin. Bir bildirim alacağım ve kendim dahil edebilirim.
— joran

3
xy <- data.frame(x=1:10, y=10:1)
plot <- ggplot(data = xy)+geom_point(aes(x = x, y = y))
plot
panel = grid.get("panel-3-3")

grid.newpage()
pushViewport(viewport(w=1, h=1, name="layout"))
pushViewport(viewport(w=1, h=1, name="panel-3-3"))
upViewport(1)
upViewport(1)
grid.draw(panel)

Error in UseMethod("grid.draw") : no applicable method for 'grid.draw' applied to an object of class "NULL"
— Roman Luštrik

grid.ls () görünüm penceresi ve grob nesnelerinin listesini görüntüler
— amaurel

panel adını kullanıyorum ggplot diğer sürümünde farklı görünüyor
— amaurel

xy <- data.frame (x = 1: 10, y = 10: 1) grafik <- ggplot (veri = xy) + geom_point (aes (x = x, y = y)) çizim paneli = grid.get (" panel-3-4 ") grid.newpage () pushViewport (görünüm alanı (w = 1, h = 1, ad =" düzen ")) pushViewport (görünüm alanı (w = 1, h = 1, ad =" panel-3- 4 ")) upViewport (1) upViewport (1) grid.draw (panel)
— amaurel

-1

Bu istediğini yapıyor mu?

 p <- ggplot(myData, aes(foo, bar)) + geom_whateverGeomYouWant(more = options) +
 p + scale_x_continuous(expand=c(0,0)) + 
 scale_y_continuous(expand=c(0,0)) +
 opts(legend.position = "none")

efsaneden kurtulur, ancak x ve y eksenleri ve arka plan ızgarası hala oradadır.
— user1320487
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.