我在ggplot2中有一个轮廓图,我想将一个点映射到。
我的轮廓图看起来像这样:
v = ggplot(pts, aes(theta_1, theta_2, z = z))
v + stat_contour(aes(colour = ..level..),bins=50)
+ xlab(expression(Theta[1])) + ylab(expression(Theta[2]))
我有一个看起来像这样的观点:
p = ggplot(ts,aes(x,y))
p + geom_point()
不幸的是,第二个覆盖了第一个。
有没有办法让它们出现在同一个地块上,类似于MATLAB的“坚持;”?
谢谢!
答案 0 :(得分:7)
您可以直接向geom_point()
提供积分:
set.seed(1000)
x = rnorm(1000)
g = ggplot(as.data.frame(x), aes(x = x))
g + stat_bin() + geom_point(data = data.frame(x = -1, y = 40), aes(x=x,y=y))
答案 1 :(得分:0)
不确定这是否仍然有用,但我认为你只需要保存更新的v对象然后添加点,而不是创建一个新的ggplot2对象。例如
v <- ggplot(pts, aes(theta_1, theta_2, z = z))
v <- v + stat_contour(aes(colour = ..level..),bins=50)
+ xlab(expression(Theta[1])) + ylab(expression(Theta[2]))
v <- v + geom_point(aes(x=ts$x, y=ts$y))
v # to display
ggplot2非常擅长以递增方式添加图层,并非所有图像都必须基于第一个ggplot调用中指定的相同数据集。