R語言繪圖教程|如何繪製漂亮的紫藤花點狀圖?
實用科研工具推薦 、詳實生信軟體教程分享、前沿創新組學文章解讀、獨家生信影片教程釋出,歡迎關注微信公眾號:
基迪奧生物 (
gene-denovo
)
本文作者:莫北
閒言少敘,直接上乾貨!不知道大家平時有沒有見過這樣一種外觀像
紫藤花
一樣好看的圖表,如下圖。
這種圖表也被稱為蜂群圖(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)
為了滿足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)
#載入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
#繪製蜂群圖;
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
重要引數:
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
#自定義半透明顏色(紅綠橙);
mycolor <- c(“#FF9999”,“#99CC00”,“#FF9900”)
p4 <- p2 + scale_colour_manual(values=alpha(mycolor,0。9))
p4
#其他配色方案:
#粉綠深紫;
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
#設定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
#自定義圖表主題,對圖表做精細調整;
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
#除了經典的主題樣式,minimal主題樣式也不錯;
p6+theme_minimal()+theme(panel。grid。minor=element_blank())
其他的配色效果也挺好看的,如下。
當然,如果你不會R語言也不打算學習使用R語言,可以試試OmicShare的蜂群圖工具,只需上傳資料也能實現類似的效果。
好啦,本次的
科研繪圖
教程就分享到這裡啦~