У меня есть следующие функции:
Вспомогательные:
PhyData <- function(Phyloseq_Obj) {
sd <- sample_data(Phyloseq_Obj)
return(as(sd,"data.frame"))
}
disNMDS <- function(Phyloseq_Obj, Distance, ...){
Otus_df <- PhyOtus(Phyloseq_Obj) # Matrix
NMDS <- vegan::metaMDS(Otus_df, distance=Distance, k=3, trymax=1000, trace=FALSE, ...)
XYZ <- vegan::scores(NMDS, display="sites")
return(XYZ)
}
Итак, я сделал основную функцию для создания трехмерного графика с плотно
Pnmds <- function(Phyloseq_Obj, Distance, Metadata, Colors="", Size=""){
P <- plotly::plot_ly(
type = "scatter3d",
mode = "markers",
marker = list(size = Size),
color = (PhyData(Phyloseq_Obj)$Metadata),
colors = Colors,
x = (disNMDS(Phyloseq_Obj, Distance)[,1]),
y = (disNMDS(Phyloseq_Obj, Distance)[,2]),
z = (disNMDS(Phyloseq_Obj, Distance)[,3]))
return(P)
}
, поэтому я пробовал:
Pnmds (Phyloseq_obj, "рев", "Месяц", цвет = c ("красный", "зеленый", "синий", "черный"), размер = 8)
с использованием столбца Месяц в качестве метаданных (Месяц, с: январь, май, июль, октябрь)
Моя проблема в том, что при использовании функции все образцы окрашиваются в один и тот же цвет (всегда синий), и не берите данные, связанные с метаданными, которые в данном случае равны 4 месяцам (январь, май, июль, октябрь).
Но когда я использую код как:
plotly::plot_ly(
type = "scatter3d",
mode = "markers",
marker = list(size = 8),
color = (PhyData(Phyloseq_Obj)$Month),
colors = c("red", "blue", "green", "black"),
x = (disNMDS(Phyloseq_Obj, "bray")[,1]),
y = (disNMDS(Phyloseq_Obj, "bray")[,2]),
z = (disNMDS(Phyloseq_Obj, "bray")[,3]),
) %>% layout(title ="Bray-Curtis (NMDS)" )
каждый месяц получить цвет; январь: красный, май: синий, июль: зеленый, и октябрь: черный, как мне нужно !!!!!! Как я хочу !!!
Любое предложение с опцией основной функции, цвета и метаданных PLOTLY, я думаю, это проблема !!!!!
спасибо !!!!