gpt4 book ai didi

r - 将其他数据集中的点添加到 ggplot2

转载 作者:行者123 更新时间:2023-12-04 05:23:29 27 4
gpt4 key购买 nike

关于这个主题已经有很多问题,但我找不到一个能回答我的具体问题的问题。

我有一个 barplot (参见下面的 testplot1testplot3)绘制数据集(下面的 bardata)并希望从另一个数据集( pointdata )向它添加点。请参阅简化示例:

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))
)

现在 testplot1工作正常,但 testplot2给出错误

Error in factor(colorname) : object 'colorname' not found.



我不明白他为什么这么说,也想知道,但这不是我的主要问题,因为有一个简单的解决方法,请参阅 testplot3以下。
 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)))

现在这一次程序说:

Error: Aesthetics must either be length one, or the same length as the dataProblems:xname, ypos, factor(ptyname).



所以我的问题是:这甚至意味着什么?显然两者 aes并且数据长度为3。 pointdata中的行数小于 bardata ,但这本身不是问题,例如参见这个答案: https://stackoverflow.com/a/2330825/2298323

那么这里发生了什么? (以及如何在我的情节中获得我的分数?)

最佳答案

问题是您正在分配 fill = factor(colorname)您的 qplot 中的整个情节称呼。

所以testplot2也会尝试映射colornamefill审美但没有colorname pointdata中的栏目data.frame 这就是您收到此错误消息的原因。如果您使用 ggplot 重写它,它看起来像这样:

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)))

您需要做的是仅将映射应用于 geom_bar打电话,像这样:
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)))

关于r - 将其他数据集中的点添加到 ggplot2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31069324/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com