我想覆盖两个图:一个是简单的点图,其中使用变量来控制点的大小;另一个是一条简单的曲线。
这是第一个情节的虚拟示例;
library(ggplot2)
x <- seq(from = 1, to = 10, by = 1)
df = data.frame(x=x, y=x^2, v=2*x)
ggplot(df, aes(x, y, size = v)) + geom_point() + theme_classic() + scale_size("blabla")
现在,我们可以使用来自另一个数据框的数据将此曲线叠加到该图上:
df2 = data.frame(x=x, y=x^2-x+2)
ggplot(df, aes(x, y, size = v)) + geom_point() + theme_classic() + scale_size("blabla") + geom_line(data=df2, aes(x, y), color = "blue") + scale_color_discrete(name = "other", labels = c("nanana"))
它产生错误:
FUN(X [[i]],...)中的错误:找不到对象'v'
v中的值不用于绘制预期的诅咒,但是无论如何,我在df2中添加了一个虚拟v。
df2 = data.frame(x=x, y=x^2-x+2, v=replicate(length(x),0)) # add a dummy v
ggplot(df, aes(x, y, size = v)) + geom_point() + theme_classic() + scale_size("blabla") + geom_line(data=df2, aes(x, y), color = "blue") + scale_color_discrete(name = "other", labels = c("nanana"))
结果有一个混乱的图例:
获得理想情节的正确方法是什么?
答案 0 :(得分:2)
您可以在geom_point()调用中添加大小aes来使其不使用df2
中的虚拟v。
不确定有关图例的确切要求。如果更换以上部件,则蓝色部分消失。如果要为线条颜色添加图例,则必须在geom_line aes调用中放置颜色。
x <- seq(from = 1, to = 10, by = 1)
df = data.frame(x=x, y=x^2, v=2*x)
df2 = data.frame(x=x, y=x^2-x+2)
ggplot(df, aes(x, y)) +
geom_point(aes(size = v)) +
theme_classic() +
scale_size("blabla") +
geom_line(data=df2, aes(x, y, color = "blue")) +
scale_color_manual(values = "blue", labels = "nanana", name = "other")