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))
})
Danke hinzufügen müssen! Das war genau das, wonach ich suchte. – shearer