2018-07-23 R for data science之使用ggplot2進(jìn)行可視化

library(tidyverse)
library(ggplot2)

查看mpg數(shù)據(jù)結(jié)構(gòu)

## 采用ggplot2自帶的數(shù)據(jù)mpg來(lái)探索引擎與燃油效率之間的關(guān)系
## 變量displ:引擎的大小   hwy: 燃油的效率
View(mpg)
image.png

簡(jiǎn)單可視化

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

ggplot2畫圖結(jié)構(gòu)

ggplot(data = <DATA>) +
  <GEOM_FUNCTION>(mapping = aes(<MAPPINGS>))

Exercises

  1. Run ggplot(data = mpg). What do you see?
  2. How many rows are in mtcars? How many columns?
  3. What does the drv variable describe? Read the help for ?mpg to
    find out.
  4. Make a scatterplot of hwy versus cyl.
  5. What happens if you make a scatterplot of class versus drv? Why is the plot not useful?
1、 運(yùn)行后得到的只是灰色的畫布,我們并沒(méi)有指定變量

2捌木、查看數(shù)據(jù)有多少行列?
> dim(mpg)  ## 表示得到數(shù)據(jù)的維度
[1] 234  11  ##表示234行 11列
> ncol(mpg) # 列
[1] 11
> nrow(mpg) # 行
[1] 234

3职辅、查看變量drv代表什么?
> ?mpg 
可以看到右邊會(huì)顯示得到如下結(jié)果
drv
f = front-wheel drive, r = rear wheel drive, 4 = 4wd 

4聂示、繪制一個(gè)hwy與cyl的散點(diǎn)圖
ggplot(mpg) +
  geom_point(aes(x = hwy, y = cyl))

5域携、ggplot(mpg) +
  geom_point(aes(x = class, y = drv))
image.png

Aesthetic Mappings

將顏色映射到class上

> unique(mpg$class)
[1] "compact"    "midsize"    "suv"        "2seater"    "minivan"    "pickup"     "subcompact"
> ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, color = class))
image.png

以點(diǎn)的大小來(lái)代表每一個(gè)類別

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, size = class))
image.png

使用陰影程度來(lái)代表不同的類別

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

使用不同的形狀來(lái)代表不同的類別

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, shape = class))
image.png

如果想改變散點(diǎn)圖中點(diǎn)的顏色?

ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy), color = "blue")
image.png

小結(jié)

  • 參數(shù)shape定義形狀催什、color定義顏色涵亏,可以指定顏色或者根據(jù)變量中的level自動(dòng)填充、size以點(diǎn)的大小來(lái)表示蒲凶,alpha可以定義陰影程度气筋。
  • shape參數(shù)形狀匯總


    image.png

Exercises

  1. What happens if you map an aesthetic to something other than
    a variable name, like aes(color = displ < 5)?
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy, color = displ < 5))
## 表示按照條件來(lái)填充顏色,不符合小于5的為一種顏色旋圆,符合小于5的為一種顏色
image.png

Facets (分面)

## 按照變量class里面不用的類來(lái)分面
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_wrap(~ class, nrow = 2) ##表示兩行
image.png
## 表示根據(jù)變量drv和cyl兩個(gè)變量里面的類別進(jìn)行排列組合即4*3=12個(gè)面
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_grid(drv ~ cyl)
image.png
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_grid(drv ~ .)  ## 表示以行展示
ggplot(data = mpg) +
  geom_point(mapping = aes(x = displ, y = hwy)) +
  facet_grid(. ~ drv) ##表示以列展示
image.png

Geometric Objects

ggplot(data = mpg) +
  geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv))
image.png
ggplot(data = mpg) +
  geom_smooth(mapping = aes(x = displ, y = hwy, linetype = drv, color = drv))
image.png
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth()
image.png

使用filter函數(shù)挑選某一類進(jìn)行smooth

ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
  geom_point(mapping = aes(color = class)) +
  geom_smooth(
    data = filter(mpg, class == "subcompact"),
    se = FALSE
  )
image.png

哈哈 中文版買了宠默,現(xiàn)在開(kāi)始就看中文版了

1.7 統(tǒng)計(jì)變換 (P19)

  • geom_bar() 統(tǒng)計(jì)變換的過(guò)程


    image.png
ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut))
ggplot(data = diamonds) + stat_count(mapping = aes(x = cut))
這兩句代碼是等價(jià)的,在這里geom_bar()使用了stat_count()函數(shù)進(jìn)行統(tǒng)計(jì)變換
image.png

如果你只想要顯示比例而不是計(jì)數(shù)的話使用以下命令 灵巧,y = ..prop..表示百分比的形式

ggplot(data = diamonds) + geom_bar(mapping = aes(x = cut, y = ..prop.., group = 1))

你可能想要在代碼中強(qiáng)調(diào)統(tǒng)計(jì)變換搀矫。例如,你可以使用 stat_summary() 函數(shù)將人們的注意力吸引到你計(jì)算出的那些摘要統(tǒng)計(jì)量上刻肄。 stat_summary() 函數(shù)為 x 的每個(gè)唯一值計(jì)算 y 值的摘要統(tǒng)計(jì):

ggplot(data = diamonds) + stat_summary(mapping = aes(x = cut, y = depth), 
                                       fun.ymin = min,
                                       fun.ymax = max,
                                       fun.y = median
)
## 表示每一個(gè)變量對(duì)應(yīng)的深度的值的分布瓤球,最大值、最小值敏弃、以及中位值卦羡,類似箱式圖
image.png

1.8、位置調(diào)整

添加柱狀圖邊框的顏色

ggplot(data = diamonds) +
  geom_bar(mapping = aes(x = cut, color = cut))
image.png

如果要設(shè)置柱狀圖填充的顏色麦到,就需要使用fill參數(shù)

ggplot(data = diamonds) +
  geom_bar(mapping = aes(x = cut, fill = cut))
image.png

如果將 fill 圖形屬性映射到另一個(gè)變量(如 clarity)绿饵,那么條形會(huì)自動(dòng)分塊堆疊起來(lái)。每個(gè)彩色矩形表示 cut 和 clarity 的一種組合瓶颠。

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

這種堆疊是由 position 參數(shù)設(shè)定的位置調(diào)整功能自動(dòng)完成的拟赊。如果不想生成堆疊式條形圖,你還可以使用以下 3 種選項(xiàng)之一: "identity"粹淋、 "fill" 和 "dodge"吸祟。

  • position = "identity" 將每個(gè)對(duì)象直接顯示在圖中瑟慈。這種方式不太適合條形圖,因?yàn)?br> 條形會(huì)彼此重疊屋匕。為了讓重疊部分能夠顯示出來(lái)封豪,我們可以設(shè)置 alpha 參數(shù)為一個(gè)較小
    的數(shù),從而使得條形略微透明炒瘟;或者設(shè)定 fill = NA,讓條形完全透明:
ggplot(data = diamonds,mapping = aes(x = cut, fill = clarity)) +
  geom_bar(alpha = 1/5, position = "identity")

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

fill = NA
  • position = "fill" 的效果與堆疊相似第步,但每組堆疊條形具有同樣的高度疮装,因此這種條
    形圖可以非常輕松地比較各組間的比例:
ggplot(data = diamonds) + 
  geom_bar(mapping = aes(x = cut, fill = clarity),position = "fill")
image.png
  • position = "dodge" 將每組中的條形依次并列放置,這樣可以非常輕松地比較每個(gè)條形
    表示的具體數(shù)值:
ggplot(data = diamonds) +
  geom_bar(mapping = aes(x = cut, fill = clarity), position = "dodge")
image.png

1.9粘都、坐標(biāo)系

坐標(biāo)系可能是 ggplot2 中最復(fù)雜的部分廓推。默認(rèn)的坐標(biāo)系是笛卡兒直角坐標(biāo)系,可以通過(guò)其獨(dú)立作用的 x 坐標(biāo)和 y 坐標(biāo)找到每個(gè)數(shù)據(jù)點(diǎn)翩隧。

  • coord_flip() 函數(shù)可以交換 x 軸和 y 軸樊展。
ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
  geom_boxplot()

ggplot(data = mpg, mapping = aes(x = class, y = hwy)) +
  geom_boxplot() +
  coord_flip()
image.png
  • coord_polar() 函數(shù)使用極坐標(biāo)系。極坐標(biāo)系可以揭示出條形圖和雞冠花圖間的一種有趣聯(lián)系:
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
bar + coord_flip()
bar + coord_polar()
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末堆生,一起剝皮案震驚了整個(gè)濱河市专缠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌淑仆,老刑警劉巖涝婉,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔗怠,居然都是意外死亡墩弯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門寞射,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)渔工,“玉大人,你說(shuō)我怎么就攤上這事桥温∫兀” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵策治,是天一觀的道長(zhǎng)脓魏。 經(jīng)常有香客問(wèn)我,道長(zhǎng)通惫,這世上最難降的妖魔是什么茂翔? 我笑而不...
    開(kāi)封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮履腋,結(jié)果婚禮上珊燎,老公的妹妹穿的比我還像新娘惭嚣。我一直安慰自己,他們只是感情好悔政,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布晚吞。 她就那樣靜靜地躺著,像睡著了一般谋国。 火紅的嫁衣襯著肌膚如雪槽地。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天芦瘾,我揣著相機(jī)與錄音捌蚊,去河邊找鬼。 笑死近弟,一個(gè)胖子當(dāng)著我的面吹牛缅糟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播祷愉,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼窗宦,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了二鳄?” 一聲冷哼從身側(cè)響起赴涵,我...
    開(kāi)封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泥从,沒(méi)想到半個(gè)月后句占,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡躯嫉,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年纱烘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片祈餐。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡擂啥,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出帆阳,到底是詐尸還是另有隱情哺壶,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布蜒谤,位于F島的核電站山宾,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏鳍徽。R本人自食惡果不足惜资锰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望阶祭。 院中可真熱鬧绷杜,春花似錦直秆、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至齿诉,卻和暖如春筝野,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粤剧。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工遗座, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俊扳。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像猛遍,于是被迫代替她去往敵國(guó)和親馋记。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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