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