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

#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
1 Like

I think i got the solution, we need to use the IDsource and IDtarget instead of the named variables, we should use the coded variables in the source and target


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 <- fig %>% layout(
  title = "aesoc",
  font = list(
    size = 10
  ),
  xaxis = list(showgrid = F, zeroline = F),
  yaxis = list(showgrid = F, zeroline = F)
)

fig

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.