在ggplot中,未來更好的數據可視化效果,我們有時候可能要用到一些坐標轉換的操作,比如要畫橫向條形圖或者蜘蛛圖等。
coord_cartesian(xlim = NULL, ylim = NULL)
笛卡爾坐標:從來看coord_cartesian的參數相對比較簡單,x和y的數據限定范圍
coord_flip(...)
橫向轉換坐標:把x軸和y軸互換,沒有特殊參數
coord_trans(x = "identity", y = "identity", limx = NULL, limy = NULL)
坐標形式轉換:包括對數轉換,平方根轉換等,這里x和y 的值可以是log10,log2或squal等,另外兩個參數也是限定坐標范圍
coord_equal(ratio=1, ...)
等坐標轉換:使用這個函數后,x軸和y軸坐標會被轉換成相等形式,此時圖形會產生較大的縮放,radio可以進一步調整縮放比例(x和y的比值)
coord_polar(theta = "x", start = 0, direction = 1)
極坐標轉換:可以做出蜘蛛圖或餅圖的效果,參數方面theta 可以選擇x或y,表示外延的坐標,start是坐標開始的角度,默認其實位置是12點鍾,
direction 表示數據的方向,1是順時針,-1為逆時針。
下面我們來看些具體的例子:
library(ggplot2) p<-ggplot(mtcars,aes(mpg,hp))+geom_point(color="blue",size=2) p+coord_cartesian()
笛卡爾坐標轉換和正常情況下畫圖的效果是一樣的。
p+coord_flip()
上圖橫坐標和縱坐標進行了互換,用條形圖看可能更明顯一些。
pp<-ggplot(mtcars,aes(cyl))+geom_bar(fill="blue",width=0.8) pp
pp+coord_flip()
p+coord_trans(x="log2",y="sqrt")
對坐標軸進行對數和平方根轉換,在之前的scale設置中有提到過,相對scale設置而言,coord_trans的優勢在於可以對x和y 進行一次性轉換。
p+coord_equal()
正常情況下,如果直接對圖形進行coord_equal操作,最后可是效果一般都非常差,因為大多數時候x和y的數據基本都不相同而且差距可能也比較大,
相對的對ratio參數進行設置是比較明智的選擇。
p+coord_equal(ratio=0.08)
這張圖的效果,相對於上一張就好多了,當然你還可以對ritio參數進行進一步設置,達到更好的效果。
p+coord_polar(theta="x")
p+coord_polar(theta="y")
可以看出兩張圖最外圈坐標的變化,是由theta參數的選擇來決定的。
pp+coord_polar(theta="x")
pp+coord_polar(theta="y")
使用條形同進行轉換的效果變成以上的樣子,圖形雖然炫酷,但可視性不如條形圖,如果cyl在三個水平下數據條目是一樣的,畫出的結果就是一個餅圖。
這個方法是ggplot中用來實現餅圖的方式。