R функция с плотно, как добавить цвет из phyloseq obj - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть следующие функции:

Вспомогательные:

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, я думаю, это проблема !!!!!

спасибо !!!!

...