如何为数据点选择唯一的颜色

时间:2018-12-08 20:07:06

标签: r ggplot2 colors legend

我需要为不同的84类型的不同向量表示法绘制Tsne

library(Rtsne); library(ggplot2)

mydata <- read.table("tsneVectors.tsv", header=FALSE, sep="\t")

matrixdata <- data.matrix(mydata)

tsne <- Rtsne(as.matrix(matrixdata[ ,2:201]), check_duplicates = FALSE, pca = FALSE, 
              perplexity=30, theta=0.5, dims=2)

tsne_plot <- data.frame(x = tsne$Y[ ,1], y = tsne$Y[ ,2], col = matrixdata[ ,202])

ggplot(tsne_plot) + geom_point(aes(x=x, y=y, color=factor(col))) + 
    labs(x="", y="", col="col")+theme(legend.title=element_blank()) +  
    theme(panel.border = element_rect(colour = "black"), 
    panel.grid.major = element_blank(), 
    panel.grid.minor = element_blank(), panel.grid.minor = element_blank(), 
    axis.line = element_line(colour = "black")) + theme_bw()

问题是,尽管颜色看起来是连续的,但有时很难看到它们之间的区别。

enter image description here

那么,有什么方法可以设置不同的颜色以更清晰地看到不同的组?

2 个答案:

答案 0 :(得分:2)

我认为甚至不可能找到84种易于识别的颜色。

将它们分成多块,每块10-15组。

具有gridExtra功能的grid.arrange()软件包对此很有用。

答案 1 :(得分:1)

也许您可以尝试根据适当的切点来打破连续变量。使用cut很简单,它根据颜色落入的间隔将色彩美感的范围划分为标记的间隔。

 library(ggplot2)
 col_intervals <- 3
 ggplot(data = mtcars, aes(x=mpg, y=wt, colour = cut(hp, col_intervals)) ) + 
 geom_point() 

enter image description here

另一个选择

ggplot(data = mtcars, aes(x=mpg, y=wt) ) + 
geom_point(aes(colour = hp)) +
  scale_colour_gradientn(colours = terrain.colors(10))

enter image description here