亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用R語言ggplot2畫網絡圖

發布時間:2021-11-22 15:10:30 來源:億速云 閱讀:806 作者:柒染 欄目:大數據

本篇文章為大家展示了怎么使用R語言ggplot2畫網絡圖,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

今天要模仿的圖片來自于論文 Core gut microbial communities are maintained by beneficial interactions and strain variability in fish。期刊是 Nature microbiology

怎么使用R語言ggplot2畫網絡圖  
image.png
怎么使用R語言ggplot2畫網絡圖  
image.png

之前分享過兩篇使用R語言的ggraph包畫網絡圖的推文

R語言網絡圖的一個小例子

R語言做網絡圖的又一個小例子

(點擊以上藍色字體可以直達推文內容)

但是今天這個論文里的網絡圖是兩個兩個圓形的布局,這個用ggraph包如何來實現自己暫時還不知道。

仔細想了一下,這個網絡圖就是點和線的組合,使用ggplot2包的geom_point()geom_segment()函數應該可以比較方便的實現。因為是圓形的布局,所以散點的坐標直接用圓形函數來生成就好了。有了想法 下面實現一下。

 首先是構造數據集

散點的位置坐標用圓形函數來生成,圓心是(0,0)半徑是4,總共生成32個點

a<-90/8
a
x1<-c()
y1<-c()
for (i in 1:7){
  x1<-append(x1,4*cos(i*a*pi/180))
  y1<-append(y1,4*sin(i*a*pi/180))

}
x1
y1
df1<-data.frame(x=x1,y=y1)
df2<-data.frame(x=x1,y=-y1)
df3<-data.frame(x=-x1,y=y1)
df4<-data.frame(x=-x1,y=-y1)
df5<-data.frame(x=c(0,4,0,-4),
                y=c(4,0,-4,0))
df11<-rbind(df1,df2,df3,df4,df5)
df11$group<-"A"
df11$color<-sample(c("A","B"),dim(df11)[1],replace = T)
   接下來畫一個簡單的散點圖試一下
ggplot(df11,aes(x,y))+
  geom_point(aes(shape=color,color=color),size=5)+
  theme(panel.background = element_blank(),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank())
 
怎么使用R語言ggplot2畫網絡圖  
image.png

按照這個思路是可以實現今天推文中提到的論文里的網絡圖的。今天時間有限,下面的代碼就不詳細介紹了,先記錄在這里

library(dplyr)
library(ggplot2)
a<-90/8
a
x1<-c()
y1<-c()
for (i in 1:7){
  x1<-append(x1,4*cos(i*a*pi/180))
  y1<-append(y1,4*sin(i*a*pi/180))

}
x1
y1
df1<-data.frame(x=x1,y=y1)
df2<-data.frame(x=x1,y=-y1)
df3<-data.frame(x=-x1,y=y1)
df4<-data.frame(x=-x1,y=-y1)
df5<-data.frame(x=c(0,4,0,-4),
                y=c(4,0,-4,0))
df11<-rbind(df1,df2,df3,df4,df5)
df11$group<-"A"
df11$color<-sample(c("A","B"),dim(df11)[1],replace = T)

b<-90/2
b
x2<-c()
y2<-c()
for (i in 1){
  x2<-append(x2,1*cos(i*b*pi/180))
  y2<-append(y2,1*sin(i*b*pi/180))
}
x2
y2
df6<-data.frame(x=x2+5,y=y2+5)
df7<-data.frame(x=-x2+5,y=y2+5)
df8<-data.frame(x=x2+5,y=-y2+5)
df9<-data.frame(x=-x2+5,y=-y2+5)
df10<-data.frame(x=c(0,1,0,-1)+5,
                 y=c(1,0,-1,0)+5)
df22<-rbind(df6,df7,df8,df9,df10)
df22$group<-"B"
df22$color<-sample(c("C","D"),dim(df22)[1],replace = T)
df<-rbind(df11,df22)
df$lable<-paste("Sample",1:dim(df)[1],sep="_")



node1<-sample(df$lable,60,replace = T)
node2<-sample(df$lable,60,replace = T)
dfnode<-data.frame(node1,node2)
dfnode

x3<-c()
y3<-c()
xend<-c()
yend<-c()
for (i in 1:60){
  label1<-dfnode[i,]$node1
  #print(label1)
  label2<-dfnode[i,]$node2
  #print(label2)
  dfnew1<-filter(df,lable==label1)
  #print("OK")
  dfnew2<-filter(df,lable==label2)
  x3<-append(x3,dfnew1$x)
  y3<-append(y3,dfnew1$y)
  xend<-append(xend,dfnew2$x)
  yend<-append(yend,dfnew2$y)
}

dfedge<-data.frame(x=x3,xend,y=y3,yend)
dfedge$node1<-node1
dfedge$node2<-node2
dfedge$group<-sample(c("A","B","C"),dim(dfedge)[1],replace = T)

ggplot()+
  geom_segment(data=dfedge,aes(x=x,y=y,xend=xend,yend=yend),
               size=1,color="grey",alpha=0.5)+
  geom_point(data=df,
             aes(x,y,shape=group,
                 color=group),
             size=5)+
  theme(panel.background = element_blank(),
        axis.text = element_blank(),
        axis.title = element_blank(),
        axis.ticks = element_blank())
   最終的結果是
怎么使用R語言ggplot2畫網絡圖  
image.png

所以如果有了網絡圖點和邊的數據,自己應該可以用ggplot2來做網絡圖了。

上述內容就是怎么使用R語言ggplot2畫網絡圖,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平陆县| 林州市| 宝坻区| 鞍山市| 宁陕县| 青州市| 收藏| 上栗县| 舟曲县| 汝南县| 大荔县| 鄂州市| 双流县| 吴堡县| 夏河县| 阿克| 沽源县| 保定市| 绍兴县| 临沭县| 许昌市| 淳安县| 高邮市| 当涂县| 锡林郭勒盟| 汾西县| 陇川县| 梅州市| 滦南县| 石阡县| 滨海县| 合阳县| 象山县| 上思县| 舒兰市| 鲁甸县| 乡宁县| 文成县| 平江县| 包头市| 抚远县|