R语言设置颜色参数后散点图为空的问题求助
问题修复方案
一、散点图加色后空白的解决
你在pairs()里写的col = my_cols["type"]是错误的:my_cols是无命名的颜色向量,而"type"是字符串类别(比如"Acoustic"),用字符串索引无命名向量只会返回NA,所有点颜色失效就成了空白。
改法很简单,先把type转成因子(自动把三个类别对应成1、2、3的整数),再用这个整数去索引颜色向量:
df <- porpoise[,c("bft", "swell", "depth", "dist", "boats", "type")] my_cols <- c("#00AFBB", "#E7B800", "#FC4E07") # 把type转为因子,让类别对应整数索引 df$type <- factor(df$type) pairs(df[,1:5], pch = 19, cex = 0.5, col = my_cols[df$type], # 用因子对应的整数取颜色 lower.panel=NULL)
二、NA警告的解决
as.numeric(detection_type)直接转字符串类别会出NA,因为"Acoustic"这类字符串没法直接变成数字。得先把字符串转成因子,再转数字:
df2 <- df[,-6] detection_type <- df[,6] library(colorspace) # 先转因子再转数字,避免NA det_col <- rev(rainbow_hcl(3))[as.numeric(factor(detection_type))]
可选优化
如果想指定哪个类别对应哪个颜色,手动设置因子水平就行:
# 按你需要的顺序指定类别,对应颜色向量的位置 df$type <- factor(df$type, levels = c("Acoustic", "Visual", "Both"))
内容的提问来源于stack exchange,提问作者IshaB
相关产品推荐
相关产品推荐

