ändern Hier ist mein anfänglicher Datenrahmen.Mit aes_string Farbe von Geom_point aus der dynamischen Spalte
data.df
x y z label
2 3 4 1
1 2 3 2
2 4 3 3
ggplot zu machen, funktioniert dies, wenn es nur 1-Säule (Label) ist:
g <- ggplot(data.df) +
geom_point(data = data.df, aes(x= x, y= y,
color = ifelse((label == 2), "a", "b")+
scale_colour_manual(values= c("a" = "blue", "b" = "green"))
return g
auf eine Schaltfläche "merge", neue Spalte mit dem Namen klicken wird dynamisch hinzugefügt:
x y z label label2
2 3 4 1 1
1 2 3 2 2
2 4 3 3 2
Jetzt in ggplot muss ich ein Zugriff auf die LAST-Spalte anstelle der Label-Spalte (es könnte label2, label3 ... sein) und update ggplot.
Ich habe zwei Möglichkeiten ausprobiert.
g <- ggplot(data.df) +
geom_point(data = data.df, aes(x= x, y= y,
color = ifelse((data.df[, ncol(data.df)] == 2, "a", "b")+
scale_colour_manual(values= c("a" = "blue", "b" = "green"))
return g
Wie dargestellt, während data.df [, ncol (data.df)], erhalte ich den Fehler mit:
Error: Aesthetics must be either length 1 or the same as the data (40): x, y, colour
ich ein Gefühl aes_string haben kann statt aes verwendet werden:
label <- paste("label", counter , sep="")
g <- ggplot(data.df) +
geom_point(data = data.df, aes_string(x= "x", y= "y",
color = ifelse((label == 2), a, b))) +
scale_colour_manual(values= c("a" = "blue", "b" = "green"))
ich erhalte diese Fehler:
Error in ifelse((label == 2), a, b))), : object a not found
Wie ist das mit Python verwandt? Auch "keine scheint zu funktionieren" ist keine korrekte Beschreibung eines Programmierproblems. – Goyo
Sie können dies tun, indem Sie die Daten vorverarbeiten, um Ihre dynamische Bezeichnung zu erstellen, und dann 'ggplot' verwenden. –
Die Aufnahme von reproduzierbaren Daten würde es wesentlich einfacher machen, Ihnen zu helfen http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –