ออบเจ็กต์ igraph สามารถกำหนดทิศทางและไม่ได้กำหนดทิศทางได้หรือไม่?

Aug 20 2020

ฉันกำลังพยายามใช้ igraph / ggraph เพื่อพล็อตเครือข่ายซึ่งมีการกำหนดขอบบางส่วนและอื่น ๆ ไม่ได้

ตัวอย่างเล็ก ๆ จาก edgelist ของฉัน ขอบไซต์ของโปรตีนคือสิ่งที่ฉันต้องการแสดงว่าไม่มีทิศทางและขอบฟอสโฟรีเลชันตามคำแนะนำ

df <- data.frame(
  stringsAsFactors = FALSE,
              from = c("RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3", "RPS6KA3"),
                to = c("RPS6KA3_Y529-p",
                       "RPS6KA3_S227-p","RPS6KA3_S369-p","RPS6KA3_T577-p","ATF4"),
            action = c("protein-site","protein-site",
                       "protein-site","protein-site","phosphorylation")
)

ฉันได้ลองย่อยการตั้งค่าขอบที่ไม่ได้บอกทิศทางและระบุว่าเป็นเช่นนี้ แต่ไม่ได้ผล:

library(igraph)
nw <- graph_from_data_frame(df)

E(nw)[E(nw)$action == "protein-site"] <- as.undirected(subgraph.edges(nw, E(nw)[E(nw)$action == "protein-site"] ))

ใครมีคำแนะนำอื่น ๆ อีกไหม? อย่างที่ฉันพูดฉันแค่ต้องการพล็อตเรื่องนี้จริงๆ (โดยใช้ ggraph)

ขอบคุณ!

คำตอบ

3 desval Aug 20 2020 at 13:51

หากคุณจะยินดีที่จะพล็อตที่มีคุณสามารถนำรายชื่อของขอบเป็นผู้กำกับและการใช้งานแล้วigraphedge.arrow.mode

nw <- graph_from_data_frame(df, directed = T)


plot(nw)

plot(nw,
     edge.arrow.mode = ifelse(E(nw)$action=="protein-site", "-", ">"))

ฉันไม่แน่ใจว่าggraphรองรับอะไรที่คล้ายกัน ฉันคิดว่าอาจเป็นไปได้ที่จะเปลี่ยนขนาดของลูกศรและตั้งค่าเป็น 0 สำหรับขอบที่ไม่ได้บอกทิศทาง สิ่งนี้ใช้ไม่ได้เนื่องจากลูกศรสืบทอดรูปแบบของขอบที่เหลือ