简体   繁体   中英

sankey plot from plotly package is blank, no error or warning

I tried to generate the sankey plot by plotly package, however there is a no error or warning but the graph is blank, could you please let me know the reason

I attached the data which I used, the data_long and nodes

I am not sure what is the reason, please help me with the reason and solution to generate the plot

data_long dataset

data_long <- structure(list(target = c("APPLICATION SITE DERMATITIS", "APPLICATION SITE DERMATITIS", 
"APPLICATION SITE DERMATITIS", "APPLICATION SITE ERYTHEMA", "APPLICATION SITE ERYTHEMA", 
"APPLICATION SITE ERYTHEMA", "APPLICATION SITE IRRITATION", "APPLICATION SITE IRRITATION", 
"APPLICATION SITE IRRITATION", "APPLICATION SITE PERSPIRATION", 
"APPLICATION SITE PRURITUS", "APPLICATION SITE PRURITUS", "APPLICATION SITE PRURITUS", 
"APPLICATION SITE VESICLES", "ASTHENIA", "CHEST PAIN", "FATIGUE", 
"FATIGUE", "OEDEMA PERIPHERAL", "MILD", "MILD", "MODERATE", "MILD", 
"MODERATE", "MILD", "MILD", "MODERATE", "MODERATE", "MODERATE", 
"MILD", "MILD", "MILD", "NONE", "POSSIBLE", "PROBABLE", "REMOTE", 
"PROBABLE", "REMOTE", "N", "N", "N", "N"), source = c("Placebo", 
"Xanomeline High Dose", "Xanomeline Low Dose", "Placebo", "Xanomeline High Dose", 
"Xanomeline Low Dose", "Placebo", "Xanomeline High Dose", "Xanomeline Low Dose", 
"Xanomeline High Dose", "Placebo", "Xanomeline High Dose", "Xanomeline Low Dose", 
"Xanomeline Low Dose", "Xanomeline High Dose", "Xanomeline High Dose", 
"Xanomeline High Dose", "Xanomeline Low Dose", "Xanomeline High Dose", 
"APPLICATION SITE DERMATITIS", "APPLICATION SITE ERYTHEMA", "APPLICATION SITE ERYTHEMA", 
"APPLICATION SITE IRRITATION", "APPLICATION SITE IRRITATION", 
"APPLICATION SITE PERSPIRATION", "APPLICATION SITE PRURITUS", 
"APPLICATION SITE PRURITUS", "APPLICATION SITE VESICLES", "ASTHENIA", 
"CHEST PAIN", "FATIGUE", "OEDEMA PERIPHERAL", "MILD", "MILD", 
"MILD", "MILD", "MODERATE", "MODERATE", "NONE", "POSSIBLE", "PROBABLE", 
"REMOTE"), value = c(4L, 2L, 4L, 2L, 5L, 5L, 1L, 3L, 3L, 1L, 
1L, 3L, 6L, 1L, 1L, 1L, 1L, 1L, 1L, 10L, 11L, 1L, 4L, 3L, 1L, 
9L, 1L, 1L, 1L, 1L, 2L, 1L, 1L, 10L, 26L, 2L, 6L, 1L, 1L, 10L, 
32L, 3L), IDsource = c(0, 1, 2, 0, 1, 2, 0, 1, 2, 1, 0, 1, 2, 
2, 1, 1, 1, 2, 1, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 13, 
13, 13, 13, 14, 14, 15, 16, 17, 18), IDtarget = c(3, 3, 3, 4, 
4, 4, 5, 5, 5, 6, 7, 7, 7, 8, 9, 10, 11, 11, 12, 13, 13, 14, 
13, 14, 13, 13, 14, 14, 14, 13, 13, 13, 15, 16, 17, 18, 17, 18, 
19, 19, 19, 19)), row.names = c(NA, -42L), class = c("grouped_df", 
"tbl_df", "tbl", "data.frame"), groups = structure(list(target = c("APPLICATION SITE DERMATITIS", 
"APPLICATION SITE DERMATITIS", "APPLICATION SITE DERMATITIS", 
"APPLICATION SITE ERYTHEMA", "APPLICATION SITE ERYTHEMA", "APPLICATION SITE ERYTHEMA", 
"APPLICATION SITE IRRITATION", "APPLICATION SITE IRRITATION", 
"APPLICATION SITE IRRITATION", "APPLICATION SITE PERSPIRATION", 
"APPLICATION SITE PRURITUS", "APPLICATION SITE PRURITUS", "APPLICATION SITE PRURITUS", 
"APPLICATION SITE VESICLES", "ASTHENIA", "CHEST PAIN", "FATIGUE", 
"FATIGUE", "MILD", "MILD", "MILD", "MILD", "MILD", "MILD", "MILD", 
"MILD", "MODERATE", "MODERATE", "MODERATE", "MODERATE", "MODERATE", 
"N", "N", "N", "N", "NONE", "OEDEMA PERIPHERAL", "POSSIBLE", 
"PROBABLE", "PROBABLE", "REMOTE", "REMOTE"), source = c("Placebo", 
"Xanomeline High Dose", "Xanomeline Low Dose", "Placebo", "Xanomeline High Dose", 
"Xanomeline Low Dose", "Placebo", "Xanomeline High Dose", "Xanomeline Low Dose", 
"Xanomeline High Dose", "Placebo", "Xanomeline High Dose", "Xanomeline Low Dose", 
"Xanomeline Low Dose", "Xanomeline High Dose", "Xanomeline High Dose", 
"Xanomeline High Dose", "Xanomeline Low Dose", "APPLICATION SITE DERMATITIS", 
"APPLICATION SITE ERYTHEMA", "APPLICATION SITE IRRITATION", "APPLICATION SITE PERSPIRATION", 
"APPLICATION SITE PRURITUS", "CHEST PAIN", "FATIGUE", "OEDEMA PERIPHERAL", 
"APPLICATION SITE ERYTHEMA", "APPLICATION SITE IRRITATION", "APPLICATION SITE PRURITUS", 
"APPLICATION SITE VESICLES", "ASTHENIA", "NONE", "POSSIBLE", 
"PROBABLE", "REMOTE", "MILD", "Xanomeline High Dose", "MILD", 
"MILD", "MODERATE", "MILD", "MODERATE"), .rows = structure(list(
    1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 
    15L, 16L, 17L, 18L, 20L, 21L, 23L, 25L, 26L, 30L, 31L, 32L, 
    22L, 24L, 27L, 28L, 29L, 39L, 40L, 41L, 42L, 33L, 19L, 34L, 
    35L, 37L, 36L, 38L), ptype = integer(0), class = c("vctrs_list_of", 
"vctrs_vctr", "list"))), class = c("tbl_df", "tbl", "data.frame"
), row.names = c(NA, -42L), .drop = TRUE))

nodes dataset

nodes <- structure(list(name = c("Placebo", "Xanomeline High Dose", "Xanomeline Low Dose", 
"APPLICATION SITE DERMATITIS", "APPLICATION SITE ERYTHEMA", "APPLICATION SITE IRRITATION", 
"APPLICATION SITE PERSPIRATION", "APPLICATION SITE PRURITUS", 
"APPLICATION SITE VESICLES", "ASTHENIA", "CHEST PAIN", "FATIGUE", 
"OEDEMA PERIPHERAL", "MILD", "MODERATE", "NONE", "POSSIBLE", 
"PROBABLE", "REMOTE", "N")), class = "data.frame", row.names = c(NA, 
-20L))

#plotly

fig <- plot_ly(
    type = "sankey",
    domain = list(
      x =  c(0,1),
      y =  c(0,1)
    ),
    orientation = "h",
    valueformat = ".0f",
    valuesuffix = "TWh",

    node = list(
      label = nodes$name,
      pad = 15,
      thickness = 15,
      line = list(
        color = "black",
        width = 0.5
      )
    ),

    link = list(
      source = data_long$source,
      target = data_long$target,
      value =  data_long$value 
    )
  ) 
fig <- fig %>% layout(
    title = "aesoc",
    font = list(
      size = 10
    ),
    xaxis = list(showgrid = F, zeroline = F),
    yaxis = list(showgrid = F, zeroline = F)
)

fig

You have to use the source and target ID columns from your dataset:

library(plotly)

fig <- plot_ly(
  type = "sankey",
  domain = list(
    x =  c(0, 1),
    y =  c(0, 1)
  ),
  orientation = "h",
  valueformat = ".0f",
  valuesuffix = "TWh",
  node = list(
    label = nodes$name,
    pad = 15,
    thickness = 15,
    line = list(
      color = "black",
      width = 0.5
    )
  ),
  link = list(
    source = data_long$IDsource,
    target = data_long$IDtarget,
    value =  data_long$value
  )
)

fig %>% layout(
  title = "aesoc",
  font = list(
    size = 10
  ),
  xaxis = list(showgrid = F, zeroline = F),
  yaxis = list(showgrid = F, zeroline = F)
)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM