2017-10-16 45 views
0

回調函數,我想用ggplot()而不是plot()爲「岑」包的回調函數R.tsne使用ggplot

從幫助

colors = rainbow(length(unique(iris$Species))) 
names(colors) = unique(iris$Species) 
ecb = function(x,y){ plot(x,t='n'); text(x,labels=iris$Species, col=colors[iris$Species]) } 
tsne_iris = tsne(iris[,1:4], epoch_callback = ecb, perplexity=50) 

x應該是一個矩陣2列一行N行,其中N是行數iris[,1:4],但我無法計算如何使ggplot在x上工作。難道我做錯了什麼?

回答

3

試試這個

library(tidyverse) 
library(tsne) 

data(iris) 

ecb <- function(x) { 

    epoc_df <- data.frame(x,Species = iris$Species) 

    plt <- ggplot(epoc_df,aes(x = X1, y = X2,label = Species,color = Species)) + geom_text() 

    print(plt) 
} 

x <- tsne(iris[,1:4],epoch_callback = ecb, perplexity = 50,max_iter = 800) 
+0

謝謝!這十分完美。 – pisistrato