前面我給大家詳細(xì)介紹過(guò)
作為一家“創(chuàng)意+整合+營(yíng)銷(xiāo)”的成都網(wǎng)站建設(shè)機(jī)構(gòu),我們?cè)跇I(yè)內(nèi)良好的客戶口碑。創(chuàng)新互聯(lián)提供從前期的網(wǎng)站品牌分析策劃、網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、創(chuàng)意表現(xiàn)、網(wǎng)頁(yè)制作、系統(tǒng)開(kāi)發(fā)以及后續(xù)網(wǎng)站營(yíng)銷(xiāo)運(yùn)營(yíng)等一系列服務(wù),幫助企業(yè)打造創(chuàng)新的互聯(lián)網(wǎng)品牌經(jīng)營(yíng)模式與有效的網(wǎng)絡(luò)營(yíng)銷(xiāo)方法,創(chuàng)造更大的價(jià)值。
?GO簡(jiǎn)介及GO富集結(jié)果解讀
?四種GO富集柱形圖、氣泡圖解讀
?GO富集分析四種風(fēng)格展示結(jié)果—柱形圖,氣泡圖
?KEGG富集分析—柱形圖,氣泡圖,通路圖
? DAVID GO和KEGG富集分析及結(jié)果可視化
也用視頻給大家介紹過(guò)
? GO和KEGG富集分析視頻講解
最近有粉絲反映說(shuō),利用clusterProfiler這個(gè)包繪制GO富集分析氣泡圖和柱形圖的時(shí)候,發(fā)現(xiàn)GO條目的名字都重疊在一起了。
氣泡圖
柱形圖
這個(gè)圖別說(shuō)美觀了,簡(jiǎn)直不忍直視。經(jīng)過(guò)我的認(rèn)真研究,發(fā)現(xiàn)跟R版本有關(guān)。前面我給大家展示的基本都是R 3.6.3做出來(lái)的圖。很多粉絲可能用的都是最新版本的R 4.1.2。
我們知道R的版本在不停的更新,相應(yīng)的R包也在不停的更新。我把繪制氣泡圖和柱形圖相關(guān)的函數(shù)拿出來(lái)認(rèn)真的研究了一下,終于發(fā)現(xiàn)的癥結(jié)所在。
dotplot這個(gè)函數(shù),多了個(gè) label_format 參數(shù)
我們來(lái)看看這個(gè)參數(shù)究竟是干什么用的,看看參數(shù)說(shuō)明
label_format :
a numeric value sets wrap length, alternatively a custom function to format axis labels. by default wraps names longer that 30 characters
原來(lái)這個(gè)參數(shù)默認(rèn)值是30,當(dāng)標(biāo)簽的長(zhǎng)度大于30個(gè)字符就會(huì)被折疊,用多行來(lái)展示。既然問(wèn)題找到了,我們就來(lái)調(diào)節(jié)一下這個(gè)參數(shù),把他設(shè)置成100,讓我們的標(biāo)簽可以一行展示。
是不是還是原來(lái)的配方,還是熟悉的味道
同樣的柱形圖,我們也能讓他恢復(fù)原來(lái)的容貌。
關(guān)于如何使用R做GO和KEGG富集分析,可參考下文
GO和KEGG富集分析視頻講解
ID轉(zhuǎn)換用到的是 bitr() 函數(shù),bitr()的使用方法:
org.Hs.eg.db包含有多種gene_name的類(lèi)型
keytypes() :keytypes(x),查看注釋包中可以使用的類(lèi)型
columns() :類(lèi)似于keytypes(),針對(duì)org.Hs.eg.db兩個(gè)函數(shù)返回值一致
select() :select(x, keys, columns, keytype, ...) eg.
函數(shù)enrichGO()進(jìn)行GO富集分析,enrichGO()的使用方法:
舉例:
第一步:獲取要繪圖的整潔數(shù)據(jù)(涉及到數(shù)據(jù)整潔和操作的知識(shí))
第二步:整潔數(shù)據(jù)做映射操作,確定x,y,color,size,shape,alpha等
第三步:選擇合適的幾何對(duì)象(根據(jù)畫(huà)圖的目的、變量的類(lèi)型和個(gè)數(shù))
第四步:坐標(biāo)系和刻度配置
第五步:標(biāo)簽信息和圖例信息
第六步:選擇合適的主題
ggplot2的語(yǔ)法包括10個(gè)部件。
數(shù)據(jù)(data)
映射(mapping)
幾何對(duì)象(geom)
標(biāo)度(scale)
統(tǒng)計(jì)變換(stats)
坐標(biāo)系(coord)
位置調(diào)整(Position adjustments)
分面(facet)
主題(theme)
輸出(output)
前3個(gè)是必須的,其它部件ggplot2會(huì)自動(dòng)配置,也可以手動(dòng)配置
ggplot2基本繪圖模板:
注意:
1)添加圖層的加號(hào)(+)只能放在行末尾
2)紅色方框里面mapping是全局域,綠色方框里面mapping是局部域,執(zhí)行先后順序,先局部域,后全局域
ggplot2畫(huà)圖必要部件-數(shù)據(jù),映射和幾何對(duì)象
2.1 數(shù)據(jù)
數(shù)據(jù)(Data)用于畫(huà)圖的整潔數(shù)據(jù)
library(tidyverse
ggplot()先只提供數(shù)據(jù),創(chuàng)建一個(gè)空?qǐng)D形。
# ggplot()先提供整潔數(shù)據(jù),生成一個(gè)空?qǐng)D形
2映射
映射,把數(shù)據(jù)變量集與圖形屬性庫(kù)建立關(guān)聯(lián)。
最常用的映射有:
x:x軸
y:y軸
color:顏色
size:大小
shape:形狀
fill:填充
alpha:透明度
以mpg數(shù)據(jù)集為例,把變量displ和hwy分別映射到x和y,變量drv映射到color,此時(shí)圖形就有了坐標(biāo)軸和網(wǎng)格線,color需要在有了幾何對(duì)象后才能體現(xiàn)出來(lái)。
# 映射操作
ggplot(data = mpg, mapping = aes(x = displ,
y = hwy, color = drv))
2.3 幾何對(duì)象
幾何對(duì)象是表達(dá)數(shù)據(jù)的視覺(jué)對(duì)象
不同類(lèi)型的幾何對(duì)象是從不同的角度表達(dá)數(shù)據(jù)。
pgglot2提供了50多種“幾何對(duì)象”,均以geom_xxxx()的方式命名,常用的有:
幾何對(duì)象很簡(jiǎn)單,只需要添加圖層即可。
例如,以mpg數(shù)據(jù)集為例,畫(huà)散點(diǎn)圖。
ggplot(data = mpg, mapping = aes(x = displ,
y = hwy,
color = drv)) +
geom_point()層依次疊加,在上圖的基礎(chǔ)上,再添加一個(gè)幾何對(duì)象:光滑曲線。
#繼續(xù)增加一個(gè)幾何對(duì)象:光滑曲線
# 寫(xiě)法1
ggplot(data = mpg, mapping = aes(x = displ,
y = hwy,
color = drv)) +
geom_point() +
geom_smooth(se=FALSE)
# 寫(xiě)法2
ggplot(data = mpg, mapping = aes(x = displ, y = hwy)) +
geom_point(aes(color = drv)) +
geom_smooth(se=FALSE)
思考題:
1)寫(xiě)法1和寫(xiě)法2的差異?(全局域和局部域的使用差異)
2)寫(xiě)法2若是要實(shí)現(xiàn)寫(xiě)法1的功能,怎么編寫(xiě)代碼?
03
標(biāo)度
ggplot2會(huì)自動(dòng)根據(jù)輸入變量選擇最優(yōu)的坐標(biāo)刻度方法,若要手動(dòng)設(shè)置或調(diào)整,就需要使用標(biāo)度函數(shù)。
標(biāo)度函數(shù)用來(lái)控制幾何對(duì)象中的標(biāo)度映射(x軸,y軸或者由color,fill,shape,size產(chǎn)生的圖例)。
ggplot2提供豐富的標(biāo)度函數(shù),常用的有:
拓展功能:scales包提供很多設(shè)置刻度標(biāo)簽風(fēng)格的函數(shù),比如百分?jǐn)?shù)、科學(xué)計(jì)數(shù)法法、美元格式等。
3.1 修改坐標(biāo)軸刻度及標(biāo)簽
連續(xù)變量使用scale_*_continuous()函數(shù),參數(shù)breaks設(shè)置各個(gè)刻度的位置,參數(shù)labels設(shè)置各個(gè)刻度對(duì)應(yīng)的標(biāo)簽。
離散變量使用scale_*_discrete()函數(shù),修改離散變量坐標(biāo)軸的標(biāo)簽。
時(shí)間變量使用scale_x_date()函數(shù)設(shè)置日期刻度,參數(shù)date_breaks設(shè)置刻度間隔,date_labels設(shè)置標(biāo)簽的日期格式
以mpg數(shù)據(jù)集為例,修改連續(xù)變量坐標(biāo)軸刻度及標(biāo)簽。
# scale_y_continuous函數(shù)
# 對(duì)比分析和觀察
# 圖1
ggplot(mpg, aes(displ, hwy)) +
geom_point()
# 圖2
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_y_continuous(breaks = seq(15, 40, by = 10))
# 圖3
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
scale_y_continuous(breaks = seq(15, 40, by = 10),
labels = c(" 一五 "," 二五 "," 三五 "))
以mpg數(shù)據(jù)集為例,修改離散變量的標(biāo)簽
# scale_x_discrete函數(shù)
# 對(duì)比分析和觀察
# 圖1
ggplot(mpg, aes(x = drv)) +
geom_bar()
# 圖2
ggplot(mpg, aes(x = drv)) +
geom_bar() +
scale_x_discrete(labels = c("4" = " 四驅(qū) ", "f" = " 前驅(qū) ",
"r" = " 后驅(qū) "))
以ggplot2自帶的economics數(shù)據(jù)集為例,修改日期變量。
# scale_x_date函數(shù)
# 以ggplot2自帶的economics為例
economics %% glimpse()
# 圖1
ggplot(tail(economics, 45), aes(date, uempmed / 100)) +
geom_line()
# 圖2
ggplot(tail(economics, 45), aes(date, uempmed / 100)) +
geom_line() +
scale_x_date(date_breaks = "6 months", date_labels = "%Y-%b") +
scale_y_continuous(labels = scales::percent)
3.2 修改坐標(biāo)軸標(biāo)簽、圖例名及圖例位置
用labs()函數(shù)參數(shù)x,y或者xlab(),ylab(),設(shè)置x軸,y軸標(biāo)簽。
若用參數(shù)color生成了圖例,可以在labs()函數(shù)用參數(shù)color修改圖例名。
用theme圖層的參數(shù)legend.position設(shè)置圖例的位置。
以mpg數(shù)據(jù)為例。
# 修改坐標(biāo)軸標(biāo)簽,圖例名和圖例位置
mpg
# 圖1
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
labs(x = " 引擎大小 (L)", y = " 高速燃油率 (mpg)",
color = " 驅(qū)動(dòng)類(lèi)型 ") +
theme(legend.position = "top")
# 圖2
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
xlab(" 引擎大小 (L)") +
ylab(" 高速燃油率 (mpg)") +
labs(color = " 驅(qū)動(dòng)類(lèi)型 ") +
theme(legend.position = "top")
# 圖3 不需要圖例
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
xlab(" 引擎大小 (L)") +
ylab(" 高速燃油率 (mpg)") +
theme(legend.position = "none")
3.3 設(shè)置坐標(biāo)軸的范圍
用coord_cartesian()函數(shù)參數(shù)xlim和ylim,或者用xlim(),ylim()設(shè)置x軸和y軸的范圍。
以mpg數(shù)據(jù)集為例。
# 修改坐標(biāo)軸的范圍
# 圖1 coord_cartesian()的參數(shù)xlim和ylim
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
coord_cartesian(xlim = c(5, 7), ylim = c(10, 30))
# 圖2 xlim()和ylim()函數(shù)
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
xlim(5, 7) +
ylim(10, 30)
3.4 變換坐標(biāo)軸
用scale_x_log10()函數(shù)變換坐標(biāo)系,可以保持原始數(shù)據(jù)的坐標(biāo)刻度。
# 修改坐標(biāo)軸的范圍
# 圖1 coord_cartesian()的參數(shù)xlim和ylim
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
coord_cartesian(xlim = c(5, 7), ylim = c(10, 30))
# 圖2 xlim()和ylim()函數(shù)
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
xlim(5, 7) +
ylim(10, 30)
3.5 設(shè)置圖形標(biāo)題
用labs()函數(shù)設(shè)置圖形標(biāo)題。
參數(shù)title 設(shè)置正標(biāo)題
參數(shù)subtitle 設(shè)置副標(biāo)題
參數(shù)caption 設(shè)置腳注標(biāo)題(默認(rèn)右下角)
# 設(shè)置標(biāo)題
# mpg數(shù)據(jù)集為例
p - ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = drv)) +
geom_smooth(se = FALSE) +
labs(title = " 燃油效率與引擎大小的關(guān)系圖 ",
subtitle = " 兩座車(chē) ( 跑車(chē) ) 因重量小而符合預(yù)期 ",
caption = " 數(shù)據(jù)來(lái)自 fueleconomy.gov")
p
標(biāo)題若要居中,采用theme圖層設(shè)置。
p + theme(plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5))
3.6 設(shè)置color、fill顏色
數(shù)據(jù)的某個(gè)維度信息可以通過(guò)顏色來(lái)表示。
可以直接使用顏色值,建議使用RColorBrewer(調(diào)色板)或者colorspace包。
1)連續(xù)變量
- 用scale_color_gradient()設(shè)置二色漸變色。
# 連續(xù)變量
# 圖1 scale_color_gradient()函數(shù)
ggplot(mpg, aes(displ, hwy, color = hwy)) +
geom_point() +
scale_color_gradient(low = "green", high = "red")
- 用scale_color_distiller()設(shè)置調(diào)色板中的顏色
# 圖2 scale_color_distiller()函數(shù)
ggplot(mpg, aes(displ, hwy, color = hwy)) +
geom_point() +
scale_color_distiller(palette = "Set1")
2)離散變量
- 用scale_color_manual()手動(dòng)設(shè)置顏色,還可以修改圖例及其標(biāo)簽信息
# 離散變量
# 圖1 scale_color_manual()函數(shù)
ggplot(mpg, aes(displ, hwy, color = drv)) +
geom_point() +
scale_color_manual(" 驅(qū)動(dòng)方式 ",
values = c("red", "blue", "green"),
breaks = c("4", "f", "r"))
ggplot(mpg, aes(displ, hwy, color = drv)) +
geom_point() +
scale_color_manual(" 驅(qū)動(dòng)方式 ",
values = c("red", "blue", "green"),
labels = c(" 四驅(qū) ", " 前驅(qū) ", " 后驅(qū) "))
-用scale_fill_brewer()調(diào)用調(diào)色板中的顏色
# 圖2 scale_fill_brewer()函數(shù)
ggplot(mpg, aes(x = class, fill = class)) +
geom_bar() +
scale_fill_brewer(palette = "Dark2")
.7 添加文字標(biāo)注
ggrepel包提供了geom_label_repel()函數(shù)或者geom_text_repel()函數(shù),為圖形添加文字標(biāo)注。
操作步驟:
第一步:先準(zhǔn)備好標(biāo)記點(diǎn)的數(shù)據(jù)
第二步:增加文字標(biāo)注圖層,包括標(biāo)記點(diǎn)的數(shù)據(jù)和標(biāo)注的文字給label參數(shù)
# 設(shè)置文字標(biāo)注信息
library(ggrepel)
# 選取每種車(chē)型 hwy 值最大的樣本
best_in_class - mpg %%
group_by(class) %%
slice_max(hwy, n = 1)
best_in_class %% select(class, model, hwy)
ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(color = class)) +
geom_label_repel(data = best_in_class,
aes(label = model))
04
計(jì)變換、坐標(biāo)系和位置調(diào)整
.1 統(tǒng)計(jì)變換
統(tǒng)計(jì)變換是構(gòu)建新的統(tǒng)計(jì)量而畫(huà)圖。
例如,條形圖或直方圖,是對(duì)數(shù)據(jù)分組的頻數(shù)做畫(huà)圖;平滑曲線是對(duì)數(shù)據(jù)擬合模型的預(yù)測(cè)值畫(huà)圖。
gplot2可以把統(tǒng)計(jì)變換直接融入畫(huà)圖中,不必先在對(duì)數(shù)據(jù)做統(tǒng)計(jì)變換后再畫(huà)圖。
gplot2提供30多種統(tǒng)計(jì),均以stats_xxx()的方式命名。
1)可在幾何對(duì)象中直接使用的統(tǒng)計(jì)變換,直接使用幾何對(duì)象就可以了。
能在幾何對(duì)象創(chuàng)建的,而需要單獨(dú)使用。
mpg數(shù)據(jù)集為例。
stat_summary()做統(tǒng)計(jì)繪圖并匯總。
# 圖1 stat_summary()做統(tǒng)計(jì)繪圖并匯總
p - ggplot(mpg, aes(x = class, y = hwy)) +
geom_violin(trim = FALSE, alpha = 0.5, color = "green")
p
p + stat_summary(fun = mean,
fun.min = function (x) {mean(x) - sd(x)},
fun.max = function (x) {mean(x) + sd(x)},
geom = "pointrange",
color = "red")
tat_smooth()添加光滑曲線,與geom_smooth()相同。
參數(shù)method設(shè)置平滑曲線的擬合方法,如lm線性回歸、glm廣義線性回歸、loess多項(xiàng)式回歸、gam廣義加法模型(mgcv包)、rlm穩(wěn)健回歸(MASS包)等。
參數(shù)formula指定平滑曲線方程,如y ~ x, y ~ poly(x, 2), y ~ log(x)等。
參數(shù)se設(shè)置是否繪制置信區(qū)間。
# 圖2 stat_smooth()添加平滑曲線
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
stat_smooth(method = "lm",
formula = y ~ splines::bs(x, 3),
se = FALSE)
ggplot(mpg, aes(displ, hwy)) +
geom_point() +
geom_smooth(method = "lm",
formula = y ~ splines::bs(x, 3),
se = FALSE)
4.2 坐標(biāo)系
ggplot2默認(rèn)是直角坐標(biāo)系。
- coord_cartesian()
常用的其它坐標(biāo)系:
以mpg數(shù)據(jù)集為例,坐標(biāo)軸翻轉(zhuǎn)。
# 圖1 坐標(biāo)軸翻轉(zhuǎn)coord_flip()
p - ggplot(mpg, aes(class, hwy)) +
geom_boxplot()
p
p + coord_flip()
直角坐標(biāo)下條形圖轉(zhuǎn)換為極坐標(biāo)下玫瑰圖。
# 圖2 直角坐標(biāo)條形圖--極坐標(biāo)玫瑰圖
p - ggplot(mpg, aes(class, fill = drv)) +
geom_bar()
p
p + coord_polar()
4.3 位置調(diào)整
條形圖的位置調(diào)整
# 圖1:條形圖條形位置調(diào)整
ggplot(mpg, aes(class, fill = drv)) +
geom_bar()
ggplot(mpg, aes(class, fill = drv)) +
geom_bar(position = "dodge")
ggplot(mpg, aes(class, fill = drv)) +
geom_bar(position = position_dodge(preserve = "single"))
散點(diǎn)圖的散點(diǎn)位置調(diào)整
# 圖1:散點(diǎn)圖的散點(diǎn)位置調(diào)整
ggplot(mpg, aes(displ, hwy)) +
geom_point()
ggplot(mpg, aes(displ, hwy)) +
geom_point(position = "jitter")
用patchwork包排布多個(gè)圖形
library(patchwork)
p1 - ggplot(mpg, aes(displ, hwy)) +
geom_point()
p2 - ggplot(mpg, aes(drv, displ)) +
geom_boxplot()
p3 - ggplot(mpg, aes(drv)) +
geom_bar()
p1 | (p2 / p3)
p1 | p2 | p3
p1 / p2 / p3
p1 / (p2 | p3)
05
分面
利用分類(lèi)變量把圖形分成若干“子圖”(面),實(shí)際上就是對(duì)數(shù)據(jù)分組后再畫(huà)圖,屬于數(shù)據(jù)分析里面細(xì)分和下鉆的思想。
5.1 用facet_wrap()函數(shù)
封裝分面,先生成一維的面板系列,再封裝到二維中。
語(yǔ)法形式:~ 分類(lèi)變量 或者 ~ 分類(lèi)變量1 + 分類(lèi)變量2
參數(shù)scales設(shè)置是否共用坐標(biāo)刻度,fixed 默認(rèn) 共用, free 不共用,還可以額通過(guò)free_x,free_y單獨(dú)設(shè)置。
查看GOplot內(nèi)示例數(shù)據(jù)的格式,對(duì)自己的數(shù)據(jù)做處理
觀察結(jié)論:
觀察自己的兩個(gè)數(shù)據(jù)表:
table.legend 設(shè)置為T(mén)時(shí)會(huì)顯示表格
本圖中表格和圖例是出圖后剪切拼合而成,沒(méi)有用R中的拼圖包
分享題目:r語(yǔ)言go數(shù)據(jù)包,go語(yǔ)言 包
鏈接地址:http://jinyejixie.com/article46/hsishg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、微信公眾號(hào)、營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)、軟件開(kāi)發(fā)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)