可視化學(xué)習(xí)筆記(六):ggplot2:坐標(biāo)軸


1酣衷、坐標(biāo)軸設(shè)置

1.1 坐標(biāo)軸轉(zhuǎn)換

使用coord_flip()函數(shù)來將坐標(biāo)軸翻轉(zhuǎn)

  • 當(dāng)反轉(zhuǎn)坐標(biāo)軸后各項(xiàng)排列順序發(fā)生改變時(shí)来农,如果x是因子變量聂受,可以使用以下函數(shù)調(diào)整:
    • scale_x_discrete()函數(shù)
    • limits=rev(levels(...))函數(shù)(為上一函數(shù)的選項(xiàng))

1.2 連續(xù)型坐標(biāo)軸值域

使用xlim()ylim()函數(shù)即可限定坐標(biāo)軸的取值范圍

  • ylim()限定范圍是scale_y_continuous()的便捷寫法扮饶,一般表達(dá)時(shí)二者等價(jià)
ylim(0, 10)
scale_y_continuous(limits=c(0, 10))

但如果需要設(shè)定scale_y_continuous的其他參數(shù)時(shí)逗鸣,同時(shí)使用二者會(huì)產(chǎn)生其他未知情況枝嘶;
因此帘饶,除了設(shè)定坐標(biāo)軸范圍需要外,如還需要調(diào)整其他屬性群扶,最好一律在scale_y_continuous()內(nèi)進(jìn)行

  • 當(dāng)通過修改坐標(biāo)軸標(biāo)度來修改值域時(shí)及刻,任何在范圍以外的數(shù)據(jù)都會(huì)被移除,最后會(huì)展示經(jīng)過修剪后的圖形
  • 當(dāng)通過坐標(biāo)軸變換修改值域穷当,數(shù)據(jù)不會(huì)被修建提茁,只是將范圍放大或縮小馁菜;
scale_y_continuous(limits=c(5, 6.5))
coord_cartesian(ylim=c(5,6.5))
  • 如果只想單向擴(kuò)展值域可以使用expand_limits(y=#)函數(shù)茴扁,但卻不能用于縮減值域

2、坐標(biāo)軸修改

2.1 反轉(zhuǎn)坐標(biāo)軸

對(duì)于連續(xù)坐標(biāo)軸汪疮,可以通過scale_*_reverse()函數(shù)來反轉(zhuǎn)峭火;或者通過限定值域(先寫最大值,再寫最小值)來調(diào)整

  • 但需要注意的是scale_*_reverse()函數(shù)與scale_*_continuous()函數(shù)類似智嚷,不能與*lim()函數(shù)搭配使用

2.2 修改項(xiàng)目順序

對(duì)于離散型坐標(biāo)軸卖丸,可以通過scale_*_discrete()函數(shù)中的limits參數(shù)來手動(dòng)修改,類似于factor()函數(shù)中的level參數(shù)

  • 如果需要反轉(zhuǎn)項(xiàng)目盏道,則需要設(shè)定`limits=rev(level(factor))

2.3 坐標(biāo)軸比例縮放

使用coord_fixed()可以對(duì)坐標(biāo)軸進(jìn)行縮放

  • 如果希望兩坐標(biāo)軸之間為固定縮放比例稍浆,可以使用ratio=#參數(shù)

2.4 坐標(biāo)軸標(biāo)簽修改

修改坐標(biāo)軸標(biāo)簽的方法有以下幾種:

  1. 使用xlabylab函數(shù)可以為坐標(biāo)軸添加文本標(biāo)簽
  2. 通過labs函數(shù)來設(shè)定
  3. 使用scale的其他函數(shù)中的name參數(shù)來設(shè)定

2.5 移除坐標(biāo)軸

使用theme(axis.title.* = element_text()來處理

2.6 修改坐標(biāo)軸標(biāo)簽外觀

和修改刻度標(biāo)簽外觀一樣,通過使用element_text()函數(shù)及其參數(shù)來設(shè)定即可

2.5 添加坐標(biāo)軸直線

在ggplot2中坐標(biāo)軸的框線一般都繪成白色隱去猜嘱,如果需要繪制坐標(biāo)軸線衅枫,可以使用axis.line = element_line(colour='black')來繪制

  • 使用最初主題樣式通過函數(shù)theme_bw()來實(shí)現(xiàn)

2.6 對(duì)數(shù)坐標(biāo)軸

使坐標(biāo)軸呈對(duì)數(shù)顯示可以通過以下方法:

  1. 對(duì)坐標(biāo)軸變量取對(duì)數(shù)后再映射到坐標(biāo)軸上
  2. 使用scale_*_log10()函數(shù)

2.7 在坐標(biāo)軸上使用日期

如果需要繪制時(shí)間序列,只要將類型為Date的變量映射到坐標(biāo)軸即可

  • ggplot2可以處理兩類時(shí)間相關(guān)的對(duì)象:
    • 日期對(duì)象(Date):表示日期,分辨率為一天
    • 日期時(shí)間對(duì)象(POSIXt):表示時(shí)刻朗伶,分辨率精確到秒的小小數(shù)部分

對(duì)于日期分割點(diǎn)可以通過以下方法來實(shí)現(xiàn):

  1. 通過創(chuàng)建一個(gè)新的二分變量來進(jìn)行映射
  2. 使用seq()函數(shù)來時(shí)間
datebreaks <- seq(as.Date("1992-06-01"), as.Date("1993-06-01"), by="2 month")

3弦撩、刻度線設(shè)置

3.1 設(shè)置刻度線位置

設(shè)置刻度線只需要使用標(biāo)度中的參數(shù)breaks=即可

  • 刻度線位置決定主網(wǎng)格線的位置:
    1. 如果坐標(biāo)軸為連續(xù)型變量,那么顏色更暗且沒有標(biāo)簽的次網(wǎng)絡(luò)格將被默認(rèn)繪制在兩個(gè)主網(wǎng)格線的正中間位置
    2. 如果坐標(biāo)軸為離散型變量论皆,則默認(rèn)會(huì)為每個(gè)項(xiàng)目生成一條刻度線
      • 可以通過limits參數(shù)修改或移除項(xiàng)目
      • breaks決定為哪些水平加上標(biāo)簽(相當(dāng)于factor()函數(shù)中的label參數(shù))

3.2 移除刻度線和標(biāo)簽

移除刻度線標(biāo)簽需使用theme(axis.text.* = element_blank())函數(shù)以及選項(xiàng)

  • 這種方法無論是離散型還是連續(xù)型均有效

移除刻度線則使用theme(axis.ticks = element_blank())函數(shù)及選項(xiàng)

  • 但無法僅隱藏單個(gè)坐標(biāo)軸刻度

刻度標(biāo)簽益楼、刻度線和網(wǎng)格線的控制根據(jù)坐標(biāo)軸類型而有所不同:

  • 連續(xù)型坐標(biāo)軸猾漫,使用scale_*_continuous=(break)參數(shù)來控制,當(dāng)breaks=NULL時(shí)感凤,三個(gè)項(xiàng)目都不會(huì)被繪制
  • 離散型坐標(biāo)軸悯周,使用limits參數(shù)控制

3.3 修改刻度標(biāo)簽文本

如果想要使得坐標(biāo)軸的刻度映射標(biāo)簽,使用像使用factor()函數(shù)一樣使用scale_*_continuous()函數(shù)來進(jìn)行操作:

hwp <- ggplot(heightweight, aes(x=ageYear, y=heightIn)) + 
  geom_point()
hwp
hwp + scale_y_continuous(breaks=c(50, 56, 60, 66, 72),
                         labels=c("Tiny", "Really\nshort", "Short",
                                  "Medium", "Tallish"))
  • breaks參數(shù)相當(dāng)于level
  • \n表示換行符俊扭,使系統(tǒng)將'Really'和'short'以兩行的形式轉(zhuǎn)換

3.4 修改刻度標(biāo)簽的外觀

對(duì)于刻度標(biāo)簽樣式的修改队橙,可以通element_text()函數(shù)來修改

element_text(angle=#, hjust=#, vjust=#, 
    family='', face='', colour='', size=#)
  • angle表示角度
  • hjustvjust分別表示橫向?qū)εc縱向?qū)ζ?/li>
  • familyface表示字體族和樣式(粗體/斜體等)

4坠陈、繪制環(huán)狀圖

繪制思路:

  1. 先繪制直方圖
  2. 使用coord_polar()函數(shù)旋轉(zhuǎn)
  3. 再通過scale_x_continuous()函數(shù)中的limits=c(0, 360))參數(shù)來設(shè)定360度
ggplot(wind, aes(x=DirCat, fill=SpeedCat)) +
  geom_histogram(binwidth=15, origin=-7.5) +
  coord_polar() +
  scale_x_continuous(limits=c(0,360))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萨惑,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子仇矾,更是在濱河造成了極大的恐慌庸蔼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贮匕,死亡現(xiàn)場(chǎng)離奇詭異姐仅,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)刻盐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門掏膏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人敦锌,你說我怎么就攤上這事馒疹。” “怎么了乙墙?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵颖变,是天一觀的道長。 經(jīng)常有香客問我听想,道長腥刹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任汉买,我火速辦了婚禮衔峰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蛙粘。我一直安慰自己垫卤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布组题。 她就那樣靜靜地躺著葫男,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崔列。 梳的紋絲不亂的頭發(fā)上梢褐,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天旺遮,我揣著相機(jī)與錄音,去河邊找鬼盈咳。 笑死耿眉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鱼响。 我是一名探鬼主播鸣剪,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼丈积!你這毒婦竟也來了筐骇?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤江滨,失蹤者是張志新(化名)和其女友劉穎铛纬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體唬滑,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡告唆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晶密。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片擒悬。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖稻艰,靈堂內(nèi)的尸體忽然破棺而出懂牧,到底是詐尸還是另有隱情,我是刑警寧澤连锯,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布归苍,位于F島的核電站,受9級(jí)特大地震影響运怖,放射性物質(zhì)發(fā)生泄漏拼弃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一摇展、第九天 我趴在偏房一處隱蔽的房頂上張望吻氧。 院中可真熱鬧,春花似錦咏连、人聲如沸盯孙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽振惰。三九已至,卻和暖如春垄懂,著一層夾襖步出監(jiān)牢的瞬間骑晶,已是汗流浹背痛垛。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留桶蛔,地道東北人匙头。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像仔雷,于是被迫代替她去往敵國和親蹂析。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容