R语言3D散点图如何根据分类字符串或数值定义标记颜色
R使用plot3D绘制按分类变量自定义颜色的3D散点图
你需要先将分类变量统一转为因子类型,再建立分类取值到自定义颜色的映射,最后将映射后的颜色向量传入scatter3D函数即可实现需求。
注意:你原有代码中使用的
color参数不是scatter3D的标准参数,设置点颜色需使用col参数。
场景1:分类变量为字符串类型(取值为cancer/control)
# 加载依赖包 library("plot3D") # 1. 将字符串分类变量转为因子 category <- as.factor(category) # 2. 自定义颜色映射,可按需替换为你想要的颜色值 color_map <- c("cancer" = "red", "control" = "blue") # 3. 生成每个样本点对应的颜色向量 point_color <- color_map[as.character(category)] # 4. 绘制3D散点图 scatter3D(pcr$PC1, pcr$PC2, pcr$PC3, col = point_color, colkey = FALSE, # 关闭默认的连续色条 pch = 16) # 设置点为实心圆形样式 # 可选:添加分组图例 legend("topright", legend = names(color_map), col = color_map, pch = 16, title = "分组")
场景2:分类变量为数值类型(取值为0/1)
# 加载依赖包 library("plot3D") # 1. 将数值分类变量转为因子 category <- as.factor(category) # 2. 自定义颜色映射,0对应control组蓝色,1对应cancer组红色,可按需修改 color_map <- c("0" = "blue", "1" = "red") # 3. 生成每个样本点对应的颜色向量 point_color <- color_map[as.character(category)] # 4. 绘制3D散点图 scatter3D(pcr$PC1, pcr$PC2, pcr$PC3, col = point_color, colkey = FALSE, pch = 16) # 可选:添加分组图例 legend("topright", legend = c("control", "cancer"), col = color_map, pch = 16, title = "分组")
如果分类数量超过2类,只需在color_map中新增对应分类的颜色映射规则即可,也可以使用RColorBrewer、viridis等包的预设调色板快速生成适配多分类的配色。
内容的提问来源于stack exchange,提问作者mahsa nemati
相关产品推荐
相关产品推荐

