如何在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
相关产品推荐
相关产品推荐

