2011-06-29 18 views
88

Chcę użyć hexboksu bioprzewodnika (co mogę zrobić), aby wygenerować wykres wypełniający cały obszar wyświetlania (png) - bez osi, bez etykiet, bez tła, bez nutki.działka ggplot2 bez osi, legend, itp.

+1

Czy nie byłoby łatwiej stworzyć wykres sześciokątny i przyciąć go w edytorze obrazów? – joran

Odpowiedz

1

Czy robi to, co chcesz?

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") 
+0

pozbywa się legendy, ale osie x i y oraz siatka tła nadal tam są. – user1320487

+0

@cassiodorus - przepraszam, tęskniłem za pierwszym razem. Daj mi trochę ... – Chase

+0

Prawdopodobnie możesz usunąć wiele z tych rzeczy używając 'theme_blank' ... – joran

138

Jak na mój komentarz w odpowiedzi Chase'a, można usunąć wiele z tych rzeczy za pomocą 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()) 

Wygląda na to jest jeszcze mały margines wokół krawędzi powstałej .png Kiedy Oszczędzam to. Być może ktoś inny wie, jak usunąć nawet ten składnik.

(nota historyczna:.. Od ggplot2 wersja 0.9.2, opts została zaniechana Zamiast używać theme() i zastąpić theme_blank() z element_blank())

+1

Wielkie dzięki! Znalazłem również podobne rozwiązanie pod adresem http://groups.google.com/group/ggplot2/browse_thread/thread/72403c6997b79c3b – user1320487

1
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) 
+0

'Błąd w UseMethod (" grid.draw "): Nie ma zastosowanej metody dla" grid.draw " do obiektu klasy "NULL" ' –

+0

grid.ls() wyświetla listę obiektów rzutni i grobów – amaurel

+0

wydaje się, że w innej wersji ggplota, w której używam nazwy panelu, jest inna – amaurel

35
'opts' is deprecated. 

w ggplot2 >= 0.9.2 użytku

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

Zdaję sobie sprawę, że nie masz jeszcze uprawnień do edycji, ale jeśli zauważysz inne moje odpowiedzi na ggplot2, które trzeba zaktualizować, ponownie: opts() zachęcamy do zaproponowania edycji. Otrzymam powiadomienie i mogę je włączyć. – joran

79

Re: zmiana opcji na temat itp. (Dla leniwych):

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()) 
22

Aktualne odpowiedzi są niekompletne lub nieskuteczne. Oto (być może) najkrótsza droga do osiągnięcia rezultatu (za pomocą theme_void():

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

Wynikiem jest:

enter image description here


Jeśli jesteś zainteresowany po prostu wyeliminowanie etykiety , labs(x="", y="") obsługuje:

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

'ggplot (dane = diamenty, mapowanie = aes (x = czystość)) + geom_bar (aes (wypełnij = wytnij)) + theme_void() + theme (legend.position =" none ", panel.background = element_rect (wypełnienie = "grey80"), plot.background = element_rect (wypełnienie = "czerwony")) 'sugeruje, że nie jest w 100% nieważny – baptiste

+0

Laboratoria (x =" ", y =" ") nie wydają się usuwać osi , tylko etykiety. – miratrix

+0

@ miratrix przepraszam, mój błąd. Zaktualizowano. – luchonacho

Powiązane problemy