ggplot文字標(biāo)簽設(shè)置之ggrepel包

在很多作圖中豁生,我們都涉及過(guò)添加標(biāo)簽酸纲,例如火山圖捣鲸,一般都是用ggrepel中的geom_text_repel函數(shù)。
構(gòu)建一個(gè)散點(diǎn)圖闽坡。


library(ggplot2)
library(ggrepel)
setwd("C:/Users/tq199/Desktop")
A <- read.csv("A.csv", header = T)

ggplot(A, aes(x=rank, y=avg_log2FC)) + 
  geom_point(size=3, color='#DC050C')+
  theme_bw()+
  theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),
        axis.title = element_text(colour = 'black', size = 15),
        axis.text = element_text(colour = 'black', size = 12))+
  labs(x='Rank', y='Log2FC')
image.png

需要標(biāo)簽的點(diǎn)整理一個(gè)單獨(dú)的文件栽惶,直接使用geom_text_repel,設(shè)置下箭頭疾嗅、大小外厂、字體等等。但是我們會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題代承,那就是有些標(biāo)簽不會(huì)顯示(顯示不全)酣衷,這是因?yàn)樘鄬?dǎo)致重復(fù)了。

B <- read.csv("B.csv", header = T)

ggplot(A, aes(x=rank, y=avg_log2FC)) + 
  geom_point(size=3, color='#DC050C')+
  geom_point(data = A[abs(A$avg_log2FC)<0.5,], 
             stroke = 0.5, size=3, shape=16, color="grey50",alpha =0.4)+
  theme_bw()+
  theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),
        axis.title = element_text(colour = 'black', size = 15),
        axis.text = element_text(colour = 'black', size = 12))+
  labs(x='Rank', y='Log2FC')+
  geom_text_repel(data=B, aes(label=X), color="black", size=4, fontface="italic", 
                  arrow = arrow(ends="first", length = unit(0.01, "npc")), box.padding = 0.2,
                  point.padding = 0.3, segment.color = 'black', segment.size = 0.3, force = 1, max.iter = 3e3)
image.png

在很多文章中次泽,我們發(fā)現(xiàn)別人的標(biāo)簽排列很整齊,這里只需要設(shè)置兩個(gè)小參數(shù)即可席爽。第一direction設(shè)置y軸對(duì)齊意荤,nudge_x設(shè)置指示線長(zhǎng)一點(diǎn)即可。


B1 <- B[B$avg_log2FC>0,]
B2 <- B[B$avg_log2FC<0,]


ggplot(A, aes(x=rank, y=avg_log2FC)) + 
  geom_point(size=3, color='#DC050C')+
  geom_point(data = A[abs(A$avg_log2FC)<0.5,], 
             stroke = 0.5, size=3, shape=16, color="grey50",alpha =0.4)+
  theme_bw()+
  theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),
        axis.title = element_text(colour = 'black', size = 15),
        axis.text = element_text(colour = 'black', size = 12))+
  labs(x='Rank', y='Log2FC')+
  geom_text_repel(data=B1, aes(label=X), color="black", size=4, fontface="italic", 
                  size=3, segment.size=0.5, nudge_x=500, direction="y", hjust=0)+
  geom_text_repel(data=B2, aes(label=X), color="black", size=4, fontface="italic", 
                 size=3, segment.size=0.5, nudge_x=-1000, direction="y", hjust=0)

圖片

最后只锻,如果需要標(biāo)注的點(diǎn)比較散玖像,也可以使用x對(duì)齊。


B3 <- B2[abs(B2$avg_log2FC)>1.2,]
ggplot(A, aes(x=rank, y=avg_log2FC)) + 
  geom_point(size=3, color='#DC050C')+
  geom_point(data = A[abs(A$avg_log2FC)<0.5,], 
             stroke = 0.5, size=3, shape=16, color="grey50",alpha =0.4)+
  theme_bw()+
  theme(panel.grid.major=element_blank(),
        panel.grid.minor=element_blank(),
        axis.title = element_text(colour = 'black', size = 15),
        axis.text = element_text(colour = 'black', size = 12))+
  labs(x='Rank', y='Log2FC')+
  geom_text_repel(data=B3, aes(label=X), color="black", size=4, fontface="italic", 
                  size=3, segment.size=0.5, nudge_x=-1000, direction="x", hjust=0)

參數(shù)

大部分geom_text()的參數(shù)都適用于geom_text_repel(),除了以下幾個(gè):

hjust
vjust
position
check_overlap

ggrepel包為geom_text_repel()與geom_label_repel()提供了特有的參數(shù)設(shè)置:

segment.color:連接點(diǎn)與標(biāo)簽的線段的顏色
segment.size:線段的粗細(xì)
segment.alpha:線段的透明度
box.padding:文本框周邊填充
point.padding:點(diǎn)周?chē)畛?arrow:grid:arrow提供的箭頭
force:強(qiáng)制性將重疊文本散開(kāi)
max.oter:最大迭代次數(shù)
nudge_x/y:標(biāo)簽開(kāi)始位置在坐標(biāo)軸的移動(dòng)距離
direction:允許標(biāo)簽的方向齐饮,x捐寥、y or both

下面舉個(gè)栗子來(lái)詳細(xì)了解這些參數(shù)的圖形效果

set.seed(42)
ggplot(mtcars)+ geom_point(aes(wt, mpg, color=factor(cyl)), size=3)+
geom_text_repel(aes(wt, mpg, color=factor(cyl),
label=rownames(mtcars), angle=ifelse(mtcars$cyl==4, 90, 0)),
size=4, family="Times", fontface="bold",
box.padding=unit(0.5, "lines"), point.padding=unit(1.6, "lines"),
segment.color = "#cccccc", segment.size = 0.5,
arrow = arrow(length=unit(0.01, "npc")),force = 1, max.iter = 3e3,
nudge_x = ifelse(mtcars$cyl==6, 2, 0), nudge_y = ifelse(mtcars$cyl==6, 9, 0))+
scale_color_discrete(name="cyl")+
scale_x_continuous(expand = c(0.5, 0))+
scale_y_continuous(expand = c(0.25, 0))+
theme_classic(base_size = 16)
image.png

參考
ggplot文字標(biāo)簽設(shè)置(geom_text_repel函數(shù))的一個(gè)小例子
R語(yǔ)言可視化學(xué)習(xí)筆記之ggrepel包

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市祖驱,隨后出現(xiàn)的幾起案子握恳,更是在濱河造成了極大的恐慌,老刑警劉巖捺僻,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件乡洼,死亡現(xiàn)場(chǎng)離奇詭異崇裁,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)束昵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)拔稳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人锹雏,你說(shuō)我怎么就攤上這事巴比。” “怎么了礁遵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵轻绞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我榛丢,道長(zhǎng)铲球,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任晰赞,我火速辦了婚禮稼病,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掖鱼。我一直安慰自己然走,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布戏挡。 她就那樣靜靜地躺著芍瑞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪褐墅。 梳的紋絲不亂的頭發(fā)上拆檬,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音妥凳,去河邊找鬼竟贯。 笑死,一個(gè)胖子當(dāng)著我的面吹牛逝钥,可吹牛的內(nèi)容都是我干的屑那。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼艘款,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼持际!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起哗咆,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜘欲,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后晌柬,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體芒填,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呜叫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了殿衰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朱庆。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖闷祥,靈堂內(nèi)的尸體忽然破棺而出娱颊,到底是詐尸還是另有隱情,我是刑警寧澤凯砍,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布箱硕,位于F島的核電站,受9級(jí)特大地震影響悟衩,放射性物質(zhì)發(fā)生泄漏剧罩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一座泳、第九天 我趴在偏房一處隱蔽的房頂上張望惠昔。 院中可真熱鬧,春花似錦挑势、人聲如沸镇防。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)来氧。三九已至,卻和暖如春香拉,著一層夾襖步出監(jiān)牢的瞬間啦扬,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工凫碌, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留扑毡,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓证鸥,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親勤晚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枉层,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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