This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Rtsne plot labelling

I m doing PCA along with RTNSE on my data set .My code

data<- read.csv('module500.csv',header = T,row.names = 1)
head(data)



set.seed(1)  # set random seed
rtsne_out <- Rtsne(as.matrix(data), pca = FALSE, verbose = TRUE)


# plot 2D t-SNE projection


plot(rtsne_out$Y, asp = 1, pch = 20, col = "red", 
     cex = 0.75, cex.axis = 1.25, cex.lab = 1.25, cex.main = 1.5, 
     xlab = "t-SNE dimension 1", ylab = "t-SNE dimension 2", 
     main = "2D t-SNE projection")

My example data file contains following data

 HSC_mean CMP_mean  GMP_mean Mono_mean Granulocyte_mean

The dim is about

> dim(data)
[1] 499   5

Im getting an image like this tnse output

Im trying how to label the cluster since this is about 499 genes and 5 sample so how do i label those I mean since I have 5 sample so 5 different colour which can label those cluster , Im not sure how do they do in the paper which i came across label each cluster...any help or suggestion would be highly appreciated

Just to make my what i'm trying to say have a look at this figure from this paper tsne figure b and the rest

r

1 answer

You would just have to supply a colour vector to the col parameter of plot(). In your example, you just select "red", so, everything is red. The colour vector should match the order of samples in your t-SNE object that you're plotting. In your case, that's however they are ordered in rtsne_out$Y

To create a colour vector for a list of factors or just text, do something like this:

samples <- c(rep("HSC_mean",2), rep("CMP_mean",4), rep("GMP_mean",6), rep("Mono_mean",8), rep("Granulocyte_mean", 10))
samples

 [1] "HSC_mean"         "HSC_mean"         "CMP_mean"         "CMP_mean"        
 [5] "CMP_mean"         "CMP_mean"         "GMP_mean"         "GMP_mean"        
 [9] "GMP_mean"         "GMP_mean"         "GMP_mean"         "GMP_mean"        
[13] "Mono_mean"        "Mono_mean"        "Mono_mean"        "Mono_mean"       
[17] "Mono_mean"        "Mono_mean"        "Mono_mean"        "Mono_mean"       
[21] "Granulocyte_mean" "Granulocyte_mean" "Granulocyte_mean" "Granulocyte_mean"
[25] "Granulocyte_mean" "Granulocyte_mean" "Granulocyte_mean" "Granulocyte_mean"
[29] "Granulocyte_mean" "Granulocyte_mean"

require("RColorBrewer")
colours <- factor(samples, levels=c("HSC_mean", "CMP_mean", "GMP_mean", "Mono_mean", "Granulocyte_mean"))
colours <- colorRampPalette(c("royalblue", "red3", "forestgreen", "gold", "black"))(length(unique(colours)))[factor(colours)]
plot(1:length(colours), col=colours, pch=18, type="h", lwd=10)

a


You can also just assign a pre-defined colour palette from colour brewer, such as Greys, Spectral, PRGn, RdBu, or something else (here, Greys).

colours <- factor(samples, levels=c("HSC_mean", "CMP_mean", "GMP_mean", "Mono_mean", "Granulocyte_mean"))
colours <- colorRampPalette(brewer.pal(9, "PRGn"))(length(unique(colours)))[factor(colours)]
plot(1:length(colours), col=colours, pch=18, type="h", lwd=10)

b
image hosting


PS - to see all available palettes, type: require("RColorBrewer"); display.brewer.all()

i got it....I can know see different color based I mean as i defined the colour of samples based on the order of my sample, another issue how do i get to label those data points , not in terms of genes, but as labelling them in terms of sample as legend , in terms of color you have defined ...

To label them after you have already called plot() (but it will be difficult to label all of them), you will need another vector, this time of names:

text(rtsne_out$Y, labels=MyLabels)

okay can i just show my color code as legend ? i think it would be difficult to put those in the plot

Log in to answer this question.