2013-04-22 11 views
7

Przepraszamy, jeśli to pytanie zostało już odebrane, ale nie mogę znaleźć tego, czego potrzebuję.zmiana wysokości wierszy generowanych przez grid.arrange, gdy nrow = 1

I przyniosły dwie działki w ggplot2 której jestem łącząc w tej samej sieci przy użyciu grid.arrange następująco:

grid.arrange(p1,p2,main="Title", ncol=2) 

który daje mi stronę działek siebie tak:

Side by side plots

(Niestety nie rozumiem, jak uzyskać to, aby pokazać mój obraz w poście, jeśli ktoś mógłby mi w tym pomóc, to byłoby wspaniale! Nie chcę denerwować ludzi za pomocą linków.)

Jak mogę zmienić ten kod, aby wykresy były nadal obok siebie, ale nie były wydłużone na całej długości obiektu? Chciałbym, żeby były kwadratowe.

Wiem, że mogę dodać argument "szczyty", ale nie jestem pewien, czy to jest to, czego potrzebuję i nie widziałem niczego tutaj, stosując to w tej sytuacji.

Dzięki!

+0

najbardziej podstawowym rozwiązaniem tego problemu jest wykreślić na oknie urządzenie „grubsze” grafika, np 'dev.new (width = 10, height = 5)' – baptiste

Odpowiedz

7

Można również określić względnych wysokościach i szerokościach używając heights i widths argumentów grid.arrange tak:

grid.arrange(p1 , p2 , widths = unit(0.5, "npc") , heights=unit(0.5, "npc") , main="Title", ncol=2) 

enter image description here

+0

Dokładnie to, co chciałem dzięki :) - Widziałem to na jednej ze stron pomocy, ale nie było to dla mnie jasne. Co oznacza "NPC"? – Nicki

+0

@NicolaCook Great! npc = znormalizowane współrzędne macierzyste - w zasadzie analogiczne do proporcji obszaru wykresu, więc wartości mieszczą się w zakresie od 0 do 1. –

4

Jak używasz ggplot2 aby działek następnie jeden sposób byłoby użyć coord_fixed(), aby uzyskać kwadratowe wykresy, a następnie je ułożyć. Można to osiągnąć za pomocą coord_fixed(), gdzie ratio= jest obliczany przez podzielenie zakresu wartości y według zakresu wartości x.

ratio.plot1<-abs(max(iris$Petal.Width)-min(iris$Petal.Width))/abs(max(iris$Petal.Length)-min(iris$Petal.Length)) 

ratio.plot2<-abs(max(iris$Sepal.Width)-min(iris$Sepal.Width))/abs(max(iris$Sepal.Length)-min(iris$Sepal.Length)) 

p1<-ggplot(iris,aes(Petal.Width,Petal.Length))+geom_point()+ 
    coord_fixed(ratio=ratio.plot1) 
p2<-ggplot(iris,aes(Sepal.Width,Sepal.Length))+geom_point()+ 
    coord_fixed(ratio=ratio.plot2) 
grid.arrange(p1,p2,main="Title",ncol=2) 

enter image description here

Powiązane problemy