r - Adding points from other dataset to ggplot2 -
there many questions theme, not find 1 answered specific problem.
i have barplot (see testplot1 , testplot3 below) plotting dataset (bardata below) , want add points dataset (pointdata). see simplified example:
bardata <- data.frame( xname = c(1, 1, 1, 2, 2, 2, 3, 3, 3), yvalue = c(1, 2, 3, 2, 3, 1, 4, 2, 1), colorname = c("a", "b", "c", "a", "b", "c", "a", "b", "c") ) pointdata <- data.frame( xname = c(1, 1, 3), ypos = c(2, 4, 3), ptyname = c("p", "q", "r") ) testplot1 <- qplot(xname, yvalue, data= bardata, stat = "identity", fill= factor(colorname), geom = "bar") testplot2 <- testplot1 + geom_point(data = pointdata, mapping = aes(x = xname, y = ypos, shape = factor(ptyname)) ) now testplot1 works fine, testplot2 gives error
error in factor(colorname) : object 'colorname' not found.
i not understand why says this, , know, not main problem since there easy workaround, see testplot3 below.
testplot3 <- qplot(xname, yvalue, data= bardata, stat = "identity", fill= factor(bardata$colorname), geom = "bar") testplot4 <- testplot3 + geom_point(data = pointdata, mapping = aes(x = xname, y = ypos, shape = factor(ptyname))) now time program says:
error: aesthetics must either length one, or same length dataproblems:xname, ypos, factor(ptyname).
so question is: mean? both aes , data of length 3. number of rows in pointdata less in bardata, in not problem, see instance answer: https://stackoverflow.com/a/2330825/2298323
so going on here? (and how points in plot?)
the issue assigning fill = factor(colorname)for whole plot in qplot call.
so testplot2 try map colorname fill aesthetic there no colorname column in pointdata data.frame why have error message. if rewrite using ggplot, looks :
ggplot(bardata, aes(xname, yvalue, fill = factor(colorname))) + geom_bar(stat = "identity")+ geom_point(data = pointdata, mapping = aes(x = xname, y = ypos, shape = factor(ptyname))) what need apply mapping geom_bar call, :
ggplot(bardata, aes(xname, yvalue)) + geom_bar(stat = "identity", aes(fill = factor(colorname)))+ geom_point(data = pointdata, mapping = aes(x = xname, y = ypos, shape = factor(ptyname)))
Comments
Post a Comment