2019-09-27 DAY-5 ggplot之統(tǒng)計變換與位置調(diào)整 孤傲的小籠包

關于diamonds數(shù)據(jù)集
ggplot2內(nèi)置數(shù)據(jù)集,包含53940顆鉆石的信息。
carat:克拉
cut:切割質(zhì)量
color:顏色等級
clarity:純凈度等級
depth:深度比例
table:鉆石頂部相對于最寬點的寬度
price:價格
"x" "y" "z" :長寬深
↑以上來自幫助文檔?diamonds

diamonds

統(tǒng)計變換函數(shù)和幾何對象函數(shù)

統(tǒng)計變換:繪圖時用來計算新數(shù)據(jù)的算法叫做統(tǒng)計變換stat
geom_bar做出的圖縱坐標為count,是計算的新數(shù)據(jù)。
geom_bar的默認統(tǒng)計變換是stat_count,stat_count會計算出兩個新變量-count(計數(shù))prop(proportions,比例)。
每個幾何對象函數(shù)都有一個默認的統(tǒng)計變換,每個統(tǒng)計變換函數(shù)都又一個默認的幾何對象。
如:用幾何對象函數(shù)geom_bar作直方圖,默認統(tǒng)計變換是stat_count,
用統(tǒng)計變換函數(shù)stat_count做計數(shù)統(tǒng)計圖,默認幾何對象是直方圖。

用幾何對象函數(shù)geom_bar作直方圖.png

用統(tǒng)計變換函數(shù)stat_count做計數(shù)統(tǒng)計圖.png

這兩者是等價的
得到同一張圖

為什么要使用某種統(tǒng)計變換?

1.覆蓋默認的統(tǒng)計變換

直方圖默認的統(tǒng)計變換是stat_count,也就是統(tǒng)計計數(shù)。當需要直接用原表格的數(shù)據(jù)作圖時就會需要覆蓋默認的。
demo <- tribble( ~cut, ~freq, "Fair", 1610, "Good", 4906, "Very Good", 12082, "Premium", 13791, "Ideal", 21551 )#新建表格并賦值給demo

image.png

ggplot(data = demo) + geom_bar(mapping = aes(x = cut, y = freq), stat = "identity")
這里直接用頻數(shù)表作圖不需要再統(tǒng)計變換了,于是用stat = "identity"覆蓋默認的統(tǒng)計變換

頻數(shù)圖.png

2.Y軸可以用比例來表示

直方圖默認的y軸是x軸的計數(shù)。此例子中x軸是是五種cut(切割質(zhì)量),直方圖自動統(tǒng)計了這五種質(zhì)量的鉆石的統(tǒng)計計數(shù),當你不想使用計數(shù),而是想顯示各質(zhì)量等級所占比例的時候就需要用到prop。
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

比例圖.png

注意:1. y = ..prop..;
2.group=1的意思是把所有鉆石作為一個整體,顯示五種質(zhì)量的鉆石所占比例體現(xiàn)出來。如果不加這一句,就是每種質(zhì)量的鉆石各為一組來計算,那么比例就都是100%,顯示五根大黑柱子。

3.在代碼中強調(diào)統(tǒng)計變換。

以stat_summary為例。
ggplot(data = diamonds) + stat_summary( mapping = aes(x = cut, y = depth), fun.ymin = min, fun.ymax = max, fun.y = median )

image.png

(小潔碎碎念:stat_summary的默認幾何圖形是geom_pointrange,而這個geom_pointrange默認的統(tǒng)計變換卻是identity,如果你不知道其中貓膩,就會發(fā)現(xiàn)他倆代碼竟然不可逆。。。一夫多妻的節(jié)奏呀。)
因此要用幾何對象函數(shù)重復這個圖形,則需要指定stat_summary。

ggplot(data = diamonds) + geom_pointrange( mapping = aes(x = cut, y = depth), stat = "summary", fun.ymin = min, fun.ymax = max, fun.y = median )

image.png

位置調(diào)整-position

在直方圖中,顏色映射是由color和fill之分的,表示邊框和填充。如果要設置無填充(也就是透明),則fill=NA。NA在數(shù)據(jù)框里表示空值。

1.直方圖之堆疊式-fill

堆疊式就是在基礎條形圖上添加第三個變量,將這個變量映射給fill,就會在每個條形中分出不同顏色且不同比例的矩形。

ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut,fill=clarity))

image.png

除了映射的方式以外,position參數(shù)設置位置調(diào)整功能。position="fill"也可以設置,但這樣設置的每組堆疊條形具有相同的高度。
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "fill")

image.png

筆者補充:感覺這種堆疊方式并不如設置fill映射,因為他突出的是比例,每組之間數(shù)值的差異被忽略了。

2.直方圖之對象直接顯示-identity

image.png

image.png

這個直方圖是重疊的

3.直方圖之并列式-dodge

ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")

image.png

image.png

3.散點圖之擾動-jitter

ggplot(data = mpg) + geom_point(mapping = aes(x = displ, y = hwy))

image.png
看著點很少,因為有些點是重疊的

添加擾動

position參數(shù)設為jitter的快速實現(xiàn):geom_jitter()
ggplot(data = mpg) + geom_jitter(mapping = aes(x = displ, y = hwy))

image.png

4.stack-堆疊

image.png

三、坐標系

(1)coord_flip#翻轉(zhuǎn)坐標系

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) + geom_boxplot() + coord_flip()

(2)coord_quickmap#為地圖設置長寬比此處需要加載maps包,否則會報錯。

nz <- map_data("nz")

ggplot(nz, aes(long, lat, group = group)) + geom_polygon(fill = "white", colour = "black")#geom_polygon 是多邊形圖

ggplot(nz, aes(long, lat, group = group)) + geom_polygon(fill = "white", colour = "black") + coord_quickmap()

(3)coord_polar #極坐標系

bar <- ggplot(data = diamonds) + geom_bar( mapping = aes(x = cut, fill = cut), show.legend = FALSE, width = 1 ) + theme(aspect.ratio = 1) + labs(x = NULL, y = NULL)
bar + coord_flip()
bar + coord_polar()

image.png

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 統(tǒng)計變換 根據(jù)現(xiàn)有的數(shù)據(jù),從新的角度進行統(tǒng)計得出新的數(shù)據(jù)的算法叫做統(tǒng)計變換(stat)(例子:比如現(xiàn)有數(shù)據(jù)知道小朋...
    粥醬_ZZ閱讀 328評論 0 0
  • 使用GGPLOT2包進行數(shù)據(jù)可視化 Introduction簡介 geom_smooth可以用于散點圖,擬合一條直...
    一條很閑的咸魚閱讀 1,043評論 0 0
  • 劉小澤開始寫于18.9.4晚,這必定是一個持續(xù)性更新的過程昨天jimmy一發(fā)朋友圈,單篇閱讀量很快超過了我們的關注...
    劉小澤閱讀 1,378評論 0 12
  • 經(jīng)不住波士頓的暴風雪侵襲,跑到遙遠的波多黎各,度過了新年。剛回到家中,窗外依舊是零下二十度的天寒地凍,實在不想出門...
    ZealousLizard閱讀 2,095評論 0 3
  • 什么是愛? 我并不了解,只是以我現(xiàn)在的年紀,還不必過多追問。。。 有這樣一個故事 一個男孩很愛一個女孩,但女孩好像...
    安簡影閱讀 151評論 0 0

友情鏈接更多精彩內(nèi)容