Инструмент alteryx r для вывода нескольких графиков (используя цикл для уникальных)

В alteryx я пытаюсь получить несколько выходных графиков в инструменте R. Мой цикл выполняется дважды, но я не получаю никаких выходных данных. Как мне заставить этот инструмент выводить несколько графиков. Этот инструмент даст мне один график, если я вызову p вне цикла, но я получу только последний график, который был запущен в инструменте.

    library(ggplot2)

    cd <- read.Alteryx("#1", mode="data.frame")


    AlteryxGraph(1, width=1008, height=298)

        #Batch graph output for each unique "group by" configuration.
        for (i in unique(cd$USN))
        {

                #Set graph data for each group:
                plot.data = subset(cd,cd$USN==i)

                #Plot settings:
                p <- ggplot(data=plot.data, aes(x=factor(Dates), y=Counts, fill=Group)) +
                    geom_bar(stat="identity", width = .8, position=position_dodge(), colour="black") + xlab("Kroger Weeks") + ylab("Units") +
                    scale_fill_manual(values=c("#88B4F7", "#FF9333")) + theme(legend.position="bottom", legend.title = element_blank()) + 
                        geom_text(aes(label=Counts), vjust=1.6, color="white", position = position_dodge(0.8), size=3.5) + ggtitle(plot.data$USN) +
                     theme(plot.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=16, hjust=0.5)) 

                p + scale_x_discrete("Kroger Weeks", labels=c("11" = "Early", "12" = "P3W4", "13" = "P4W1", "14" = "P4W2", "15" = "P4W3", 
           "16" = "P4W4", "17" = "P5W1", "18" = "P5W2", "19" = "P5W3", "20" = "P5W4",
            "21" = "P6W1", "22" = "P6W2", "23" = "P6W3", "24" = "P6W4", "25" = "P7W1",
            "26" = "P7W2", "27" = "P7W3", "28" = "P7W4", "29" = "P8W1", "30" = "P8W2", "31" = "P8W3", "32" = "P8W4"))

        AlteryxMessage("How Many Times", msg.consts$INFO, priority.consts$LOW)
        p
        }

#p I ONLY GET AN OUTPUT IF I THIS HERE (and only my last graph)


invisible(dev.off())

person jeh    schedule 19.03.2019    source источник


Ответы (1)


У меня есть Alteryx, но я им мало пользуюсь. Однако я предполагаю, что проблема связана с отображением объектов ggplot в цикле в R. Всякий раз, когда вы помещаете p в цикл, очень маловероятно, что он появляется... Я бы посоветовал сначала попробовать print(p) вместо p. Если это решит проблему. Затем готово.

Если вы хотите сохранить объект ggplot, а потом посмотреть на них, то попробуйте (ничего не менял внутри, только заменил цикл на lapply):

    myList <- lapply(unique(cd$USN), function(x) {
        #Set graph data for each group:
        plot.data = subset(cd, cd$USN==x)

        #Plot settings:
        p <- ggplot(data=plot.data, aes(x=factor(Dates), y=Counts, fill=Group)) +
            geom_bar(stat="identity", width = .8, position=position_dodge(), colour="black") + xlab("Kroger Weeks") + ylab("Units") +
            scale_fill_manual(values=c("#88B4F7", "#FF9333")) + theme(legend.position="bottom", legend.title = element_blank()) + 
            geom_text(aes(label=Counts), vjust=1.6, color="white", position = position_dodge(0.8), size=3.5) + ggtitle(plot.data$USN) +
            theme(plot.title = element_text(family = "Trebuchet MS", color="#666666", face="bold", size=16, hjust=0.5)) 

        p + scale_x_discrete("Kroger Weeks", labels=c("11" = "Early", "12" = "P3W4", "13" = "P4W1", "14" = "P4W2", "15" = "P4W3", 
                                                      "16" = "P4W4", "17" = "P5W1", "18" = "P5W2", "19" = "P5W3", "20" = "P5W4",
                                                      "21" = "P6W1", "22" = "P6W2", "23" = "P6W3", "24" = "P6W4", "25" = "P7W1",
                                                      "26" = "P7W2", "27" = "P7W3", "28" = "P7W4", "29" = "P8W1", "30" = "P8W2", "31" = "P8W3", "32" = "P8W4"))

        return(p)
    }

Вы можете получить доступ к своим графикам с помощью myList[[1]], myList[[2]] и т. д. Надеюсь, это поможет.

person wxxyyyzz    schedule 19.03.2019
comment
print(p) сделал это. Герой дня! Если вы когда-нибудь будете в районе Цинциннати, я должен вам кофе или пиво. Спасибо!!! - person jeh; 20.03.2019