實用科研工具推薦 、詳實生信軟體教程分享、前沿創新組學文章解讀、獨家生信影片教程釋出,歡迎關注微信公眾號:

基迪奧生物 (

gene-denovo

本文作者:莫北

閒言少敘,直接上乾貨!不知道大家平時有沒有見過這樣一種外觀像

紫藤花

一樣好看的圖表,如下圖。

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

這種圖表也被稱為蜂群圖(beeswarm),可能是因為圖形外觀像爬滿蜜蜂的蜂窩,哈哈!與常見的箱型圖、小提琴圖一樣,蜂群圖也主要用於展示資料的分佈情況。我在《繪製複雜組合圖表的獨家秘笈分享》一文中介紹過蜂群圖與

柱狀圖

進行組合的畫法,當然OmicShare也有相應的線上小工具。

工具連結:https://www.omicshare.com/tools/Home/Soft/beeswarm

下面主要為大家介紹如何使用ggbeeswarm包繪製這樣好看的“紫藤花”。

#安裝ggbeeswarm包;

#install。packages(“ggbeeswarm”)

#載入ggbeeswarm包;

library(ggbeeswarm)

#設定工作目錄;

setwd(“C:/Users/MHY/Desktop”)

#讀入資料;

dt <- read。csv(“expression。csv”,row。names=1,header = T)

#預覽資料的前六行;

head(dt)

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

為了滿足ggplot2包的作圖資料格式,這裡將“寬資料”轉成“長資料”,這裡用到reshape2中的melt函式。

#載入reshape2;

library(reshape2)

df <- melt(dt,id。vars=NULL,

measure。vars = c(“Activated_T”,“HSC”,“Naive_T”),

variable。name = “Cluster”,

value。name = “Expression”)

#id。vars表示不需要合併的列;

#measure。vars表示需要合併的列;

#variable。name表示

列名

合併後的新列名;

#value。name表示數值合併後的新列名。

#檢視轉換後的資料;

head(df,10)

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#載入ggplot2;

library(ggplot2)

#指定繪圖順序;

#levels不能有重複值,這裡使用unique去重;

df$Cluster <- factor(df$Cluster,levels = unique(df$Cluster), ordered = T)

#將資料與圖形建立對映;

p1 <- ggplot(df,aes(x=Cluster,y=Expression))

p1

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#繪製蜂群圖;

p2 <- p1+geom_beeswarm(data=df,mapping=aes(color=Cluster),

priority=“descending”,

alpha=0。7,

dodge。width = 0,

size=2,

cex = 1。5,

show。legend=F)

p2

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

重要引數:

dodge。width

:可用於設定圖形左右兩側空餘區域,避免圖形被繪圖區域剪下;priority:/praɪˈɒrəti/ 意為優先、重點,這裡用於設定點的佈局樣式。

#priority = c(“ascending”,“descending”, “density”, “random”, “none”);

#預設引數為“ascending” /əˈsendɪŋ/,上升、升序;

#“descending” /dɪˈsendɪŋ/ 降序、下降;

#而“density” 朝向上下兩個方向;

#“random” 和 “none” 效果相似,點的分佈為隨機狀;

#繪製“朝上”的蜂群圖,有點像

高粱

的穗子;

p3 <- p1+geom_beeswarm(data=df,mapping=aes(color=Cluster),

priority=“ascending”,

alpha=0。7,

dodge。width = 0,

size=2,

cex = 1。4,

show。legend=F)

p3

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#自定義半透明顏色(紅綠橙);

mycolor <- c(“#FF9999”,“#99CC00”,“#FF9900”)

p4 <- p2 + scale_colour_manual(values=alpha(mycolor,0。9))

p4

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#其他配色方案:

#粉綠深紫;

mycolor <- c(“#FF99CC”,“#99CC00”,“#9933FF”)

#紅綠紫;

mycolor <- c(“#f8766d”,“#7cae00”,“#c77cff”)

#粉綠紫;

mycolor <- c(“#FF99CC”,“#99CC00”,“#c77cff”)

p5 <- p3 + scale_colour_manual(values=alpha(mycolor,0。9))

p5

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#設定y軸範圍(上下兩端的空白區域設為1),修改刻度標籤;

#expansion函式設定

座標軸

範圍兩端空白區域的大小;mult為“倍數”模式,add為“加性”模式;

p6<-p4+labs(x=“”)+scale_y_continuous(expand=expansion(add = c(1, 1)),

limits = c(0, 15),

breaks = c(0,5,10,15),

label = c(“0”,“5”,“10”,“15”))

p6

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#自定義圖表主題,對圖表做精細調整;

top。mar=0。2

right。mar=0。2

bottom。mar=0。2

left。mar=0。2

#隱藏

縱軸

,並對字型樣式、座標軸的粗細、顏色、刻度長度進行限定;

mytheme<-theme_classic()+

theme(text=

element_text

(family = “sans”,colour =“gray30”,size = 12),

axis。line = element_line(size = 0。6,colour = “gray30”),

axis。ticks = element_line(size = 0。6,colour = “gray30”),

axis。ticks。length = unit(1。5,units = “mm”),

plot。margin=unit(x=c(top。mar,right。mar,bottom。mar,left。mar),

units=“inches”))

#應用自定義主題;

p6+mytheme

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

#除了經典的主題樣式,minimal主題樣式也不錯;

p6+theme_minimal()+theme(panel。grid。minor=element_blank())

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

其他的配色效果也挺好看的,如下。

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

當然,如果你不會R語言也不打算學習使用R語言,可以試試OmicShare的蜂群圖工具,只需上傳資料也能實現類似的效果。

R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?

好啦,本次的

科研繪圖

教程就分享到這裡啦~