Как совместить ggplot и сюжет?

Я пытался:

ggplot(temp, aes(x,y)) + geom_hex(bins=100) + plot(y1,x1,pch = 0, col="red")

Изображение без второй части (красные точки). Что я должен изменить?

> str(x)
 num [1:1397] 1.62 1.62 1.62 1.63 1.63 1.63 1.63 1.63 1.63 1.63 ...
> str(y)
 int [1:1397] 2998 3001 3005 2993 2998 2999 3002 3003 3004 3006 ...
> str(x2)
 num [1:6] 1.7 1.9 2.18 2.7 2.6 3
> str(y2)
 num [1:6] 3000 3600 4000 4800 5100 5600

Важным моментом является то, что длина векторов не является одинаковой (1397 против 6).

Он работает отлично. Я сделал data.frame от x2 и y2.

ggplot(temp, aes(x,y)) +
+ geom_hex(bins=100) +
+ geom_point(data=mk , aes(x=x2, y=y2), col = "red")
2 ответа

Если вы хотите объединить их в один сюжет, вы можете сделать все в ggplot2 (предположив, что x1 и y1 находятся в dataframe df):

ggplot(temp, aes(x,y)) +
 geom_hex(bins=100) +
 geom_point(aes(x=x1, y=y1), data=df, shape=20, size=2, color="red")


Это можно сделать с помощью gridBase пакета. Я по-прежнему предпочитаю использовать sp.plot, чем ggplot для построения карт. Поэтому эта функция может быть полезна. Я должен упомянуть эту страницу как информацию, которая ведет меня к ответу.

Фиктивный пример:

library(gridBase)
library(grid)
library(ggplot2)

data <- data.frame(x=1:10,y=rnorm(10))

par(mfrow = c(1,2))

vp <- viewport(height = unit(1,"npc"), width=unit(0.5, "npc"), 
 just = c("left","top"),
 y = 0, x = 0)


print(plot(data$x,data$y,xlab="x",ylab="y",pch = 21,bg="black"),vp=vp)

vp <- viewport(height = unit(1,"npc"), width=unit(0.5, "npc"), 
 just = c("left","top"),
 y = 1, x = 0.5)


print(ggplot(data,aes(x,y)) + geom_point(),vp=vp)

licensed under cc by-sa 3.0 with attribution.