2016-05-19 6 views
0

Ich habe eine Frage zu ggplot2. Entschuldigung, dass Sie keine Beispieldaten angegeben haben, da die Funktion glänzend aufgerufen wird. Bei Bedarf werde ich versuchen, ein minimales Beispiel ohne den glänzenden Code zu erstellen. Aber ich hoffe, dass die Frage einfach ist und eine Antwort möglich ist, ohne den Code erneut auszuführen.Hinzufügen ggplot2 Option geom_hline als Zeichenfolge

Ich versuche mehrere geom_hline Optionen zu einer ggplot-Funktion zu geben, die als Strings innerhalb einer for-Schleife erzeugt werden. struct$Retention sind einige numerische Werte.

Das Problem ist, dass eval(parse(text = horizLine)) versucht, die Zeichenfolge zu bewerten und so versucht + Strings hinzuzufügen, die in dem folgenden Fehler führt:

Warning: Error in +: non-numeric argument to binary operator 
Stack trace (innermost first): 
    78: eval [<text>#1] 
    77: eval 
    76: renderPlot [plots.R#11] 
    68: output$ClaimPlot 
    1: runApp 

Also, was ich suche ist ein Weg, um die Zeichenfolge zu geben, mit der + Funktion als Option für die Funktion ggplot. Oder eine andere Möglichkeit, ggplot die Optionen zu geben.

output$ClaimPlot <- renderPlot({ 
    x <- readClaimData() 
    struct <- readStructData() 
    horizLine <- c() 
    for(i in 1:length(struct$Retention)) { 
     horizLine[i] <- paste("geom_hline(aes(yintercept =", as.numeric(struct$Retention[i]), "))", sep = "") 
    } 
    horizLine <- paste(horizLine, sep = "", collapse = " + ") 
    x <- melt(x, id.vars = c("Year", "ClaimNo"), variable.name = "State", value.name = c("Claim")) 
    ggplot(data = x, aes(x=factor(ClaimNo), y=Claim, fill = factor(State))) + 
    geom_bar(colour = "black", stat = "identity") + 
    ylab("Claim Size") + 
    xlab("Claim Number") + 
    facet_grid(Year ~ .) + 
    eval(parse(text = horizLine)) 
}) 

Antwort

1

Gibt es einen Grund, warum Sie können nicht nur die struct Datenrahmen zu geom_hline passieren?

Etwas wie folgt aus:

ggplot(data = x, aes(x=factor(ClaimNo), y=Claim, fill = factor(State))) + 
    geom_bar(colour = "black", stat = "identity") + 
    ylab("Claim Size") + 
    xlab("Claim Number") + 
    facet_grid(Year ~ .) + 
    geom_hline(data=struct, aes(yintercept=Retention)) 

Je nachdem, was genau Sie suchen, können Sie andere Informationen struct (? Das heißt, die Jahr)

+0

Danke hinzufügen müssen! Das war genau das, wonach ich suchte. – shearer

Verwandte Themen