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.