You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言的Plotly中为用户对应数据点添加虚线连接

解决方案:为用户测试分数点添加虚线连接

我有如下数据集,每位用户对应测试类型A和B各一组分数:

library(plotly)
data <- data.frame(name = c("Ana", "Ana", "Joyce", "Joyce", "Kam", "Kam"),
                   type = c("A", "B", "A", "B", "A", "B"),
                   score1 = c(100, 90, 0, 20, 33, 99),
                   score2 = c(100, 30, 0, 20, 55, 66))

当前未添加虚线的绘图代码:

plot_ly(data = data,
        x = ~score1,
        y = ~score2,
        hoverinfo = 'text',
        text = ~I(name),
        mode = "markers",
        transforms = list(
          list(
            type = 'groupby',
            groups = data$type,
            styles = list(
              list(target = "A", value = list(marker =list(color = 'red'))),
              list(target = "B", value = list(marker =list(color = 'blue')))
            )
          )
        )) 

要实现每位用户的A、B测试分数点用虚线连接,可在现有绘图基础上,循环每个用户添加虚线轨迹:

library(plotly)

data <- data.frame(name = c("Ana", "Ana", "Joyce", "Joyce", "Kam", "Kam"),
                   type = c("A", "B", "A", "B", "A", "B"),
                   score1 = c(100, 90, 0, 20, 33, 99),
                   score2 = c(100, 30, 0, 20, 55, 66))

# 绘制带颜色区分的标记点
p <- plot_ly(data = data,
             x = ~score1,
             y = ~score2,
             hoverinfo = 'text',
             text = ~I(name),
             mode = "markers",
             transforms = list(
               list(
                 type = 'groupby',
                 groups = data$type,
                 styles = list(
                   list(target = "A", value = list(marker = list(color = 'red'))),
                   list(target = "B", value = list(marker = list(color = 'blue')))
                 )
               )
             ))

# 为每个用户添加灰色虚线连接
for (user in unique(data$name)) {
  user_points <- subset(data, name == user)
  p <- p %>% add_trace(
    data = user_points,
    x = ~score1,
    y = ~score2,
    mode = "lines",
    line = list(color = "gray", dash = "dash"),
    hoverinfo = "none",
    showlegend = FALSE
  )
}

# 展示绘图
p

这段代码会:

  • 保留原有的红色(类型A)、蓝色(类型B)标记点
  • 为每个用户的两个测试点添加一条灰色虚线
  • 虚线不显示hover信息,也不会出现在图例中,避免干扰原有视觉效果

内容的提问来源于stack exchange,提问作者Adrian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 16:25:26