2012-06-26 68 views
7

我想用ggplot2 geom_point繪製點圖,其中連續變量按不同因子分層。ggplot2通過一些x軸跳汰圖繪製3個因子

這是很複雜的,也許是我想表現出過多的在一個圖形,但我有我想要顯示它像這樣

p <- ggplot(mtcars[,c(1,2,10,11)], aes(factor(cyl), mpg)) 
p + geom_point(aes(colour = factor(gear), shape=factor(carb))) 

enter image description here

影響的事情

三種不同的因素

但是我想分解因數(齒輪),即對於x軸上的三個因子(cyl)值中的每一個,我想要x軸上的不同因子(齒輪)顏色之間的小距離

即在因子(cyl)== 4內,因子(齒輪)== 3在3.9上排序,因子(齒輪)== 4在4上並且因子(齒輪)== 5在4.1上排序。這對每個因素(cyl)值都重複。

希望是有道理的

NB這是一個玩具的例子。我會用分類的非數字值來代替因式分解的數字;我意識到3.9/4.1上的值很混亂。

+1

爲什麼不刻面的齒輪數據給三個地塊? – John

+0

方面聽起來不錯,我試圖找出它的使用:http://had.co.nz/ggplot2/facet_grid.html –

+1

如果發現這個鏈接對ggplot2非常有用 - http://wiki.stdout.org/ rcookbook/Graphs/ – John

回答

8

隨着facet_grid()和mtcars例如:

library(ggplot2) 
data(mtcars) 

p <- ggplot(mtcars, aes(factor(cyl), mpg)) + geom_point(aes(colour=factor(carb))) 
p + facet_grid(. ~ gear) 

By number of gears

+0

這太好了。有沒有一種簡單的方法來改變不同方面頂部的文本屬性(也許這應該是一個單獨的問題!) –

+0

報廢,這裏有一個很好的例子:http://wiki.stdout.org/ rcookbook/Graphs/Facets%20%28ggplot2%29 /(非常感謝鏈接John!) –

4

subset是這樣做的一種方法。通過gears將數據子集,然後依次爲每個子集分配一組點。

library(ggplot2) 

p <- ggplot() 
p + geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 3), aes(x = as.numeric(factor(cyl)) - 0.1, y = mpg, colour = factor(gear), shape=factor(carb))) + 
    geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 4), aes(x = as.numeric(factor(cyl)), y = mpg, colour = factor(gear), shape=factor(carb))) + 
    geom_point(data = subset(mtcars[,c(1,2,10,11)], gear == 5), aes(x = as.numeric(factor(cyl)) + .1, y = mpg, colour = factor(gear), shape=factor(carb))) + 
    scale_x_continuous("Cylinders", breaks = c(1,2,3), labels = c(4,6,8), expand = c(.2,0)) 

enter image description here

+0

這適用於我給出的例子,但是當使用分類值而不是數字來表示柱面時,它會起作用嗎? –

+0

不明白爲什麼不。經過一些重新編碼後,你可以在mtcars數據上試試它:'library(car); mtcars $ cyl = factor(recode(mtcars $ cyl,「4 ='Four'; 6 ='Six'; 8 ='Eight'」),levels = c(「Four」,「Six」,「Eight」)) 「我總是喜歡小平面,但解決方案實際上完全按照您的要求進行。 –

相關問題