Как выбрать уникальный цвет для точек данных - PullRequest
0 голосов
/ 08 декабря 2018

Мне нужно нарисовать Tsne для разных представлений векторов для разных типов 84.

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 голосов
/ 09 декабря 2018

Может быть, вы можете попробовать разбить непрерывную переменную в соответствии с подходящими точками разрезаЭто просто, используя 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

0 голосов
/ 08 декабря 2018

Я не думаю, что даже можно найти 84 цвета, которые легко различимы для человеческого глаза.

Разделите их на несколько участков с 10-15 группами на участке.

Для этого будет полезен пакет gridExtra с функцией grid.arrange().

...