【问题标题】:R plotly scatterpolar chart bubble missingR plotly scatterpolar图表气泡丢失
【发布时间】:2023-04-08 22:12:01
【问题描述】:

我知道这一定是基本问题,但很难找到问题所在。 这是我的简单可重现的 R 代码

library(plotly)

risk_status <- data.frame(
  id <- c(1:6),
  r <- c(1, 2, 3, 4, 3, 2),
  theta <- c(30, 90, 180, 220, 270, 330),
  bubbleSize <- c(10, 20, 30, 40, 50, 60),
  name <- c("Rick","Dan","Michelle","Ryan","Gary", "Pedro"),
  status <- c("Low", "Medium", "Low", "Medium", "Low", "Low")
)

risk_status$status <- factor(risk_status$status, levels = c("Low", "Medium", "High"))
bubble_colors_vector <- c("red", "green", "blue")


p <- plot_ly( data = risk_register_data) %>%
  add_trace(
    type = 'scatterpolar',
    r = ~r,
    theta = ~theta,
    size = as.numeric(risk_status$status),
    sizes = c(100,500)#,

    #color = risk_status$status,
    #colors = bubble_colors_vector
  ) %>%
  add_trace(
    type = "scatterpolar",
    mode = "text",
    r = risk_status$r,
    theta = risk_status$theta,
    text = risk_status$id

  )
p

图表输出:

到目前为止,一切都很好。 但现在让我们说,如果我想在其中引入颜色,只需取消注释 colorcolors 参数即可。 我得到这张图表:

假设我使用color = as.numeric(risk_status$status) 在这种情况下,我会得到类似这样的图表

在这里,我不想要这些天平和传说。

我知道,存在一些问题,因为虽然 factoring 是数据框的 status 列,但我提供了 "Low", "Medium", "High" 作为级别,而在列中只有 "Low", "Medium" 存在。 但是,这是正常情况,同样,没有颜色的气泡大小表示正确,那为什么在添加颜色时也会丢失大小?

提前致谢!

【问题讨论】:

    标签: r plotly scatter-plot r-plotly


    【解决方案1】:

    最后, 我通过在for loop 中使用add_trace 的解决方法解决了这个问题。

    代码如下:

    library(plotly)
    
    risk_status <- data.frame(
      id <- c(1:6),
      r <- c(1, 2, 3, 4, 3, 2),
      theta <- c(30, 90, 180, 220, 270, 330),
      bubbleSize <- c(10, 20, 30, 40, 50, 60),
      name <- c("Rick","Dan","Michelle","Ryan","Gary", "Pedro"),
      status <- c("Low", "Medium", "Low", "Medium", "Low", "Low")
    )
    
    risk_status$status <- factor(risk_status$status, levels = c("Low", "Medium", "High"))
    bubble_colors_vector <- c("red", "green", "blue")
    
    
    p <- plot_ly( data = risk_status) %>%
    
      add_trace(
        type = 'scatterpolar',
        r = risk_status$r[risk_status$status == 'Low'],
        theta = risk_status$theta[risk_status$status == 'Low'],
        #size = as.numeric(risk_status$status[risk_status$status == 'Low']),
        #sizes = c(100,500),
    
        #color = 'red', #risk_status$status[risk_status$status == 'Low'], #as.numeric(risk_status$status), #risk_status$status,
        #colors = bubble_colors_vector[risk_status$status == 'Low'],
    
        mode = 'markers',
        marker = list(symbol = 'circle', line = list(width = 1, color = 'black'), mode="scatterpolar", color = "red", size=20)
      ) %>%
      add_trace(
        type = 'scatterpolar',
        r = risk_status$r[risk_status$status == 'Medium'],
        theta = risk_status$theta[risk_status$status == 'Medium'],
        #size = as.numeric(risk_status$status[risk_status$status == 'Medium']),
        #sizes = c(100,500),
    
        #color = 'red', #risk_status$status[risk_status$status == 'Medium'], #as.numeric(risk_status$status), #risk_status$status,
        #colors = bubble_colors_vector[risk_status$status == 'Medium'],
    
        mode = 'markers',
        marker = list(symbol = 'circle', line = list(width = 1, color = 'black'), mode="scatterpolar", color = "yellow", size=20)
      ) %>%
    
      add_trace(
        type = 'scatterpolar',
        r = risk_status$r[risk_status$status == 'High'],
        theta = risk_status$theta[risk_status$status == 'High'],
        #size = as.numeric(risk_status$status[risk_status$status == 'High']),
        #sizes = c(100,500),
    
        #color = 'red', #risk_status$status[risk_status$status == 'High'], #as.numeric(risk_status$status), #risk_status$status,
        #colors = bubble_colors_vector[risk_status$status == 'High'],
    
        mode = 'markers',
        marker = list(symbol = 'circle', line = list(width = 1, color = 'black'), mode="scatterpolar", color = "green", size=20)
      ) %>%
    
    
      add_trace(
        type = "scatterpolar",
        mode = "text",
        r = risk_status$r,
        theta = risk_status$theta,
        text = risk_status$id
    
      )
    p
    

    输出图表:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-09
      • 2018-07-25
      • 2018-01-24
      • 2019-08-08
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      相关资源
      最近更新 更多