R語言可視化學習筆記之ggridges包

作者:嚴濤 浙江大學作物遺傳育種在讀研究生(生物信息學方向)偽碼農,R語言愛好者,愛開源。

嚴濤老師的繪圖教程還有:

gganimate |諾獎文章里面的動圖繪制教程來了!!

ggplot2學習筆記之圖形排列

R包ggseqlogo |繪制序列分析圖

ggplot2高效實用指南 (可視化腳本、工具、套路、配色)

簡介

ggridges包主要用來繪制山巒圖。尤其是針對時間或者空間分布可視化具有十分好的效果。ggridges主要提供兩個幾何圖像函數:

  • geom_ridgeline(): 主要繪制山脊線圖

  • geom_density_ridges():主要繪制密度山脊線圖

具體用法可以參考官方文檔:

https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html

geom_ridgeline()
library(ggridges)library(tidyverse)# grid.arrange來自于gridExtra包,可以同時拼圖多個ggplot2對象library(gridExtra)my_>plot_base <- ggplot(my_data, aes(x, y, height=height))# 默認負值不顯示,除非指定min_height參數grid.arrange(plot_base+geom_ridgeline(),             plot_base+geom_ridgeline(min_height=-2), ncol=2)

geom_density_ridges()

geom_density_ridges()函數首先會根據數據計算密度然后繪圖,此時美學映射height沒有必要寫入函數中。下面使用lincoln_weather數據集。

# creates a vector of n equally spaced colors along the# Matplolib "viridis" color map# also designed to be perceived by readers with the most common form of color blindness#  scale_fill_viridis函數來源于此包,# 其參數 option用于設置顏色 "magma" (or "A"), "inferno" (or "B"), "plasma" (or "C"),and "viridis" (or "D", the default option).# ?viridis可以查看其具體含義library(viridis)head(lincoln_weather[ ,1:4])## # A tibble: 6 x 4##   CST      `Max Temperature [F]` `Mean Temperature [F]` `Min Temperature ~##   <chr>                    <int>                  <int>              <int>## 1 2016-1-1                    37                     24                 11## 2 2016-1-2                    41                     23                  5## 3 2016-1-3                    37                     23                  8## 4 2016-1-4                    30                     17                  4## 5 2016-1-5                    38                     29                 19## 6 2016-1-6                    34                     33                 32# x后的值用 ` (反引號)括起,是因為列名字中存在空格和特殊字符,需要特殊對待# fill = ..x.., double dots是ggplot2的一種特殊識別符,用來區分定義的和計算的美學參數# 這里指用橫軸的數據著色ggplot(lincoln_weather, aes(x=`Mean Temperature [F]`, y=`Month`, fill=..x..))+  geom_density_ridges_gradient(scale=3, rel_min_height=0.01, gradient_lwd = 1.)+  scale_x_continuous(expand = c(0.01, 0))+ # 擴展下橫軸和縱軸  scale_y_discrete(expand = c(0.01,0))+  scale_fill_viridis(name="Temp. [F]", option = "C")+  labs(title="Temperature in Lincoln NE",       subtitle="Mean temperature (Fahrenheit) by month for 2016\nData:Orogin CSV from the Weather Underground ")+  theme_ridges(font_size = 13, grid = FALSE)+  theme(axis.title.y = element_blank())

cyclinal scales

為了使得ggridges繪制的圖形可視化效果最好,同時為了減少用戶對顏色設置的困難,作者提供了cyclinal scales用于顏色輪轉映射。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+  geom_density_ridges(scale=4)+  scale_fill_cyclical(values = c("blue", "green"))+  theme_ridges(grid = FALSE)

默認的,cyclinal scales為了防止誤解是不繪制圖例的,但是可以通過選項guide="legend"添加圖例。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+  geom_density_ridges(scale=4)+  scale_fill_cyclical(values = c("blue", "green"), guide="legend")+  theme_ridges(grid = FALSE)

ggplot2一樣,圖例是可以修改的,其他參數比如大小、透明度、形狀等都是可以通過cyclinal scales修改。

ggplot(diamonds, aes(x=price, y=cut, fill=cut))+  geom_density_ridges(scale=4)+  scale_fill_cyclical(values = c("blue", "green"), guide="legend",                      labels=c("Fair"="blue", "Good"="green"),                      name="Fill colors")+  theme_ridges(grid = FALSE)

再來2個示例

不做解釋了,如果想重現就把代碼拆解開,按需修改。一句句話單獨拆開運行,理解其操作內容。

library(dplyr)library(forcats)Catalan_elections %>%  mutate(YearFct = fct_rev(as.factor(Year))) %>%  ggplot(aes(y = YearFct)) +  geom_density_ridges(    aes(x = Percent, fill = paste(YearFct, Option)),    alpha = .8, color = "white", from = 0, to = 100  ) +  labs(    x = "Vote (%)",    y = "Election Year",    title = "Indy vs Unionist vote in Catalan elections",    subtitle = "Analysis unit: municipalities (n = 949)",    caption = "Marc Belzunces (@marcbel>  ) +  scale_y_discrete(expand = c(0.01, 0)) +  scale_x_continuous(expand = c(0.01, 0)) +  scale_fill_cyclical(    breaks = c("1980 Indy", "1980 Unionist"),    labels = c(`1980 Indy` = "Indy", `1980 Unionist` = "Unionist"),    values = c("#ff0000", "#0000ff", "#ff8080", "#8080ff"),    name = "Option", guide = "legend"  ) +  theme_ridges(grid = FALSE)

library(DAAG) # for ais >ais$sport <- factor(  ais$sport,  levels = c("B_Ball", "Field", "Gym", "Netball", "Row", "Swim", "T_400m", "T_Sprnt", "Tennis", "W_Polo"),  labels = c("Basketball", "Field", "Gym", "Netball", "Row", "Swim", "Track 400m", "Track Sprint", "Tennis", "Water Polo"))ggplot(ais, aes(x=ht, y=sport, color=sex, point_color=sex, fill=sex)) +  geom_density_ridges(    jittered_points=TRUE, scale = .95, rel_min_height = .01,    point_shape = "|", point_size = 3, size = 0.25,    position = position_points_jitter(height = 0)  ) +  scale_y_discrete(expand = c(.01, 0)) +  scale_x_continuous(expand = c(0, 0), name = "height [cm]") +  scale_fill_manual(values = c("#D55E0050", "#0072B250"), labels = c("female", "male")) +  scale_color_manual(values = c("#D55E00", "#0072B2"), guide = "none") +  scale_discrete_manual("point_color", values = c("#D55E00", "#0072B2"), guide = "none") +  guides(fill = guide_legend(    override.aes = list(      fill = c("#D55E00A0", "#0072B2A0"),      color = NA, point_color = NA))  ) +  ggtitle("Height in Australian athletes") +  theme_ridges(center = TRUE)

還有很多用法有興趣的可以查看官方文檔https://cran.r-project.org/web/packages/ggridges/vignettes/introduction.html和https://cran.r-project.org/web/packages/ggridges/vignettes/gallery.html)繼續學習。

那你知道單細胞基因表達中這個圖怎么畫了嗎?

如果不知道,可能你需要來參加單細胞轉錄組的課程了!!!

R統計和作圖

  • 維恩(Venn)圖繪制工具大全 (在線+R包)

  • 在R中贊揚下努力工作的你,獎勵一份CheatShet

  • 別人的電子書,你的電子書,都在bookdown

  • R語言 - 熱圖繪制 (heatmap)

  • R語言 - 熱圖美化

  • R語言 - 線圖繪制

  • R語言 - 圖形設置中英字體

  • R語言 - 非參數法生存分析

  • 基因共表達聚類分析和可視化

  • R中1010個熱圖繪制方法

  • 一個函數抓取代謝組學權威數據庫HMDB的所有表格數據

  • network3D: 交互式桑基圖

  • 你知道R中的賦值符號箭頭<-和等號=的區別嗎?

  • 1數據類型(向量、數組、矩陣、 列表和數據框)

  • 2讀寫數據所需的主要函數、與外部環境交互

  • 4向量、矩陣的數學運算

  • 5控制結構

  • 6函數及作用域

  • 1初識ggplot2繪制幾何對象

  • 3工具箱—誤差線、加權數、展示數據分布

  • 5通過圖層構建圖像

  • 繪圖相關系數矩陣corrplot

  • 相關矩陣可視化ggcorrplot

  • 繪制交互式圖形recharts

  • 交互式可視化CanvasXpress

  • 解決散點圖樣品標簽重疊ggrepel

  • 添加P值或顯著性標記ggpubr

  • Alpha多樣性稀釋曲線rarefraction curve

  • 沖擊圖展示組間時間序列變化ggalluvial

  • 桑基圖riverplot

  • 微生物環境因子分析ggvegan

  • 五彩進化樹與熱圖更配ggtree

  • 多元回歸樹分析mvpart

  • 隨機森林randomForest  

  • 繪圖相關系數矩陣corrplot

  • 相關矩陣可視化ggcorrplot

  • 繪制交互式圖形recharts

  • 交互式可視化CanvasXpress

  • 解決散點圖樣品標簽重疊ggrepel

  • 添加P值或顯著性標記ggpubr

  • Alpha多樣性稀釋曲線rarefraction curve

  • 沖擊圖展示組間時間序列變化ggalluvial

  • 桑基圖riverplot

  • 微生物環境因子分析ggvegan

  • 五彩進化樹與熱圖更配ggtree

  • 多元回歸樹分析mvpart

  • 隨機森林randomForest  

高顏值免費在線繪圖

往期精品

 生信視頻 生信系列教程 

心得體會 TCGA數據庫 Linux  

高通量分析 免費在線畫圖  

生信學習    ggplot2

海哥組學 可視化套路 基因組瀏覽器

 圖形排版 互作網絡

 2019影響因子 GSEA 單細胞 

后臺回復“生信寶典福利第一波”獲取教程合集

免責聲明:本文僅代表文章作者的個人觀點,與本站無關。其原創性、真實性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容文字的真實性、完整性和原創性本站不作任何保證或承諾,請讀者僅作參考,并自行核實相關內容。

http://image99.pinlue.com/thumb/img_jpg/BA8CWhHQWPzbH3hExia80MVeYXl7mfK3DSkKcTsIxzaapsJaEuibnkicjMayhic0jO1fPPzT8UiaOM4taiaGbmGb8vnA/0.jpeg
我要收藏
贊一個
踩一下
分享到
相關推薦
精選文章
?
分享
評論
首頁
竞彩网足球