坐標系是將兩種位置標度結合在一起組成的2維定位系統。ggplot2包含了6種不同的坐標系:
名字 | 描述 |
cartesian equal flip trans map polar |
笛卡爾坐標系 同尺度笛卡爾坐標系 翻轉的笛卡爾坐標系 變換的笛卡爾坐標系 地圖射影 極坐標系 |
坐標系主要有兩大功能:
- 將2個位置圖形屬性組合起來在圖形中形成2維方位系統。位置圖形屬性分別被稱為x和y,但將它們稱作位置1和位置2可能會更適合,因為圖形位置屬性的名字會隨着坐標系的不同而不同。比如極坐標系中將其稱作角度和半徑。
- 配合分面,坐標系將繪出坐標軸和面板背景。標度控制着坐標上出現的數值,並將數據映射到圖形中的位置,然后通過坐標系將它們繪制出來。
1.笛卡爾坐標系
上表總前四種都是笛卡爾坐標系:coord_cartesian,coord_equal,coord_flip,和coord_trans。coord_cartesian有兩個參數xlim和ylim。
> library(ggplot2) > p <- qplot(disp,wt,data=mtcars) + geom_smooth() > p > p + scale_x_continuous(limits=c(325,500)) > p+coord_cartesian(xlim=c(325,500))
左圖是完整的數據集,中為x的標度范圍設置,右圖為x軸坐標系范圍設置。標度的范圍設置是對數據取子集,然后再重新擬合曲線。坐標系的放縮就是圖像的放縮。
> d <- ggplot(diamonds,aes(carat,price)) + stat_bin2d(bins=25,colour="grey70") + theme(legend.position="none") > d > d + scale_x_continuous(limits=c(0,2)) > d + coord_cartesian(xlim=c(0,2)) >
左圖是完整的數據集,中間是標度設置x范圍,右圖是x軸坐標系的范圍設置。比較方塊的大小,當設定標度范圍時,方塊的數目還是相同的,只是覆蓋了更少數的區域,當設定坐標系范圍時,方塊數目變少,但它們覆蓋的區域沒變。
2.坐標軸翻轉
假如對y值條件下的x值感興趣,我們可以使用coord_flip調換x和y軸。
> qplot(displ,cty,data=mpg)+geom_smooth() > qplot(cty,displ,data=mpg)+geom_smooth() ##直接對坐標屬性進行對換 > qplot(displ,cty,data=mpg)+geom_smooth()+coord_flip() ##使用翻轉函數
左圖是原散點圖相應的平滑曲線。中圖互換兩個屬性變量,平滑曲線擬合的是旋轉后的變量。右圖coord_flip擬合原始數據,然后再翻轉輸出結果,就變成是以y為條件變量刻畫x的曲線了。
3.變換
coord_trans有x和y兩個參數供坐標系使用,它們都是字符串,被稱作變換器。坐標系層面的變換發生再統計變換之后,會影響幾何形狀。我們下面比較下在標度和坐標系下的變換。
> qplot(carat,price,data=diamonds,log="xy")+geom_smooth(method="lm") > library(scales) > last_plot()+coord_trans(x = exp_trans(10),y=exp_trans(10))
左圖為克拉和價格對數變換后的散點圖,直線為回歸曲線:log(y)=a+bXlog(x)。右圖將前面的圖變換回去,標度還原,因此線性趨勢變成指數形式,y=k X cx 。圖形很明顯地揭示了克拉大、價格貴地鑽石是很稀少地。
4.非笛卡爾坐標系
非笛卡爾坐標系有兩種:極坐標和地圖投影。利用極坐標可生成餅圖玫瑰圖等等,但由於角度在小地半徑中比在大地半徑中更難被感知,因此極坐標地視覺感官性並不佳。
> pie <- ggplot(mtcars,aes(x = factor(1),fill=factor(cyl))) + geom_bar() > pie ##堆疊條狀圖 > pie + coord_polar(theta="y") ##餅圖 > pie + coord_polar() ##牛眼圖