用R畫Circular barplot圖(環(huán)狀柱形圖)

參考文章:可視化之circular barplot

之前利用WGCNA分析得到了一組感興趣的基因(WGCNA學(xué)習(xí)筆記)号枕,然后又用cytoscape軟件得到一個表,里面有每一個node(基因)對應(yīng)了多少條edge的文件:

這個表里一共有115個基因湿故,degree.layout表示的是每一個基因有多少條edge與其相連“⒊茫現(xiàn)在想把這個表可視化一下。但是如果做個柱形圖坛猪,這個表就太長了脖阵,而且難看:

這是我見過最丑的柱形圖,沒有之一

所以就想著把它掰彎墅茉。命黔。。

(一)方法一

#導(dǎo)入數(shù)據(jù)就斤,就是上面那個表格
> b = read.csv("weight_morethan0.35_node_degree.csv",header = T,sep = ",")
# 設(shè)置幾列空表悍募,因為我不想讓環(huán)閉合,如果你想要閉合的環(huán)洋机,可以不用這一步
> empty_bar=10
# 把空表加到原始數(shù)據(jù)里
> to_add = matrix(NA, empty_bar, ncol(b))
> colnames(to_add) = colnames(b)
> data=rbind(b, to_add)
> data$id=seq(1, nrow(data))
# 加名字
> label_data = data
> number_of_bar = nrow(label_data)
> angle= 90 - 360 * (label_data$id - 0.5) /number_of_bar   #這一步是設(shè)置環(huán)的角度  
> label_data$hjust<-ifelse( angle < -90, 1, 0)
> label_data$angle<-ifelse(angle < -90, angle+180, angle)
# 畫圖
> p = ggplot(data, aes(x=as.factor(id), y=degree.layout)) +       
      geom_bar(stat="identity", fill=alpha("blue", 0.7)) +
      ylim(-100,120) +
      theme_minimal() +
      theme(
        axis.text = element_blank(),
        axis.title = element_blank(),
        panel.grid = element_blank(),
        plot.margin = unit(rep(-1,4), "cm") 
      ) +
      coord_polar(start = 0) + 
#這一行是給環(huán)外側(cè)加注釋
      geom_text(data=label_data, aes(x=id, y=degree.layout+20, label=name, hjust=hjust), color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data$angle, inherit.aes = FALSE )+
#這一行是給環(huán)內(nèi)側(cè)加數(shù)字
      geom_text(aes(y = ifelse(degree.layout >= 10,8, (degree.layout + 3)), color = "red",label = round(degree.layout, 2)), size = 1.5)
> p

(二)方法二

如果我想根據(jù)degree.layout的值坠宴,把這些基因分成幾組,分別用不同的顏色應(yīng)該怎么弄绷旗?

> library(tidyverse)
#導(dǎo)入數(shù)據(jù)
> data2 = read.csv("weight_morethan0.35_node_degree.csv",header = T,sep = ",")
#把每一組的基因數(shù)統(tǒng)計出來
> A = sum(data2$degree.layout >=60)
> B = sum(data2$degree.layout >=50) - A 
> C = sum(data2$degree.layout >=40) - A - B
> D = sum(data2$degree.layout >=30) - (A+B+C)
> E = sum(data2$degree.layout >=20) - (A+B+C+D)
> f = sum(data2$degree.layout >=10) - (A+B+C+D+E)
> G = sum(data2$degree.layout < 10)
#把分組情況加到原始數(shù)據(jù)里
> data3 = data.frame(
  data2,
  group=c(rep('A', A), rep('B', B), rep('C', C), rep('D', D),rep('E',E),rep('F',f),rep('G',G))
)
# 加空列
> empty_bar2=4
> to_add2 = data.frame(matrix(NA, empty_bar2*nlevels(data3$group), ncol(data3)))
> colnames(to_add2) = colnames(data3)
> to_add2$group=rep(levels(data3$group), each=empty_bar2)
> data4 = rbind(data3, to_add2)
> data4 = data4 %>% arrange(group)
> data4$id=seq(1, nrow(data4))
# 加名字
> label_data2 = data4
> number_of_bar2 = nrow(label_data2)
> angle2= 90 - 360 * (label_data2$id-0.5) /number_of_bar2     
> label_data2$hjust<-ifelse(angle2 < -90, 1, 0)
> label_data2$angle<-ifelse(angle2 < -90, angle2 +180, angle2)
# 畫圖
> p = ggplot(data4, aes(x=as.factor(id), y=degree.layout, fill=group)) +      
  geom_bar(stat="identity", alpha=0.5) +
  ylim(-100,120) +
  theme_minimal() +
  theme(
    legend.position = "none",
    axis.text = element_blank(),
    axis.title = element_blank(),
    panel.grid = element_blank(),
    plot.margin = unit(rep(-1,4), "cm") 
  ) +
  coord_polar() + 
  geom_text(data=label_data2, aes(x=id, y=degree.layout + 20, label=name, hjust=hjust), color="black", fontface="bold",alpha=0.6, size=2.5, angle= label_data2$angle, inherit.aes = FALSE )+ 
  geom_text(aes(y = ifelse(degree.layout >= 10,8, (degree.layout + 3)),  label = round(degree.layout, 2)), size = 1.5)
> p

現(xiàn)在漂亮多了~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載喜鼓,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末衔肢,一起剝皮案震驚了整個濱河市庄岖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌角骤,老刑警劉巖隅忿,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異邦尊,居然都是意外死亡背桐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蝉揍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來链峭,“玉大人,你說我怎么就攤上這事疑苫⊙妫” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵捍掺,是天一觀的道長撼短。 經(jīng)常有香客問我,道長挺勿,這世上最難降的妖魔是什么曲横? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上禾嫉,老公的妹妹穿的比我還像新娘灾杰。我一直安慰自己,他們只是感情好熙参,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布艳吠。 她就那樣靜靜地躺著,像睡著了一般孽椰。 火紅的嫁衣襯著肌膚如雪昭娩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天黍匾,我揣著相機(jī)與錄音栏渺,去河邊找鬼。 笑死锐涯,一個胖子當(dāng)著我的面吹牛磕诊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播纹腌,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼霎终,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了壶笼?” 一聲冷哼從身側(cè)響起神僵,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤雁刷,失蹤者是張志新(化名)和其女友劉穎覆劈,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沛励,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡责语,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了目派。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坤候。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖企蹭,靈堂內(nèi)的尸體忽然破棺而出白筹,到底是詐尸還是另有隱情,我是刑警寧澤谅摄,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布徒河,位于F島的核電站,受9級特大地震影響送漠,放射性物質(zhì)發(fā)生泄漏顽照。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望代兵。 院中可真熱鬧尼酿,春花似錦、人聲如沸植影。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽思币。三九已至句惯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間支救,已是汗流浹背抢野。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留各墨,地道東北人指孤。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像贬堵,于是被迫代替她去往敵國和親恃轩。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345