我相信这可以变得更有效率,但这里有一种方法。本质上,我们遵循您的建议,即将数据分成不同的部分,将连续的数据分成不同的部分,然后将所有部分重新拼凑起来,并使用我们自己选择的比例。
library(ggplot2)
library(RColorBrewer)
#Sample data
dat <- data.frame(x = rnorm(100), y = rnorm(100), z = rnorm(100))
dat[sample(nrow(dat), 5), 3] <- NA
dat[sample(nrow(dat), 5), 3] <- Inf
#Subset out the real values
dat.good <- dat[!(is.na(dat$z)) & is.finite(dat$z) ,]
#Create 6 breaks for them
dat.good$col <- cut(dat.good$z, 6)
#Grab the bad ones
dat.bad <- dat[is.na(dat$z) | is.infinite(dat$z) ,]
dat.bad$col <- as.character(dat.bad$z)
#Rbind them back together
dat.plot <- rbind(dat.good, dat.bad)
#Make your own scale with RColorBrewer
yourScale <- c(brewer.pal(6, "Blues"), "red","green")
ggplot(dat.plot, aes(x,y, colour = col)) +
geom_point() +
scale_colour_manual("Intensity", values = yourScale)
为什么'DAT $ COL [is.finite(DAT $ Z)] < - 切(DAT $ Z [is.finite(DAT $ Z)],6)'未能工作?而不是获取间隔标签,我只是得到整数... –
@Uri - 我遇到了同样的问题,因此沿着从好坏中分离出“好”值的路径,然后将它们绑定在一起。我猜这是因为当你试图一次完成它时,这些因素被转换为相应的数字......虽然我承认没有花太多时间试图迫使它工作,因为我想出了解决方案。 – Chase