绘制图片特定区域中的点

时间:2016-03-09 10:55:47

标签: r ggplot2

我想在图片上绘制点:

我有以下df

x <- c(1,2)
y <- c(10,12)
df <- data.frame(x,y

以下图片 - tennis court

enter image description here

 img <- readJPEG("tennis_court.jpg")

以下代码绘制图片

 ggplot(df, aes(x,y)) + 
 annotation_custom(rasterGrob(img, width=unit(1,"npc"), height=unit(1,"npc")), 
                   -Inf, Inf, -Inf, Inf) +
 stat_bin2d() +
 scale_x_continuous(expand=c(0,0)) +
 scale_y_continuous(expand=c(0,0)) 

这有效,但我想在特定区域绘制点。所以我想说我想把它放在球场右侧的左侧服务区。

有没有想过如何对图片的特定部分进行分类,以便在该区域内绘制点?

1 个答案:

答案 0 :(得分:3)

这是一种方法:

library(jpeg)
library(ggplot2)
library(grid)
library(scales)

download.file("http://i.stack.imgur.com/BozHb.jpg", tf <- tempfile(fileext = ".jpg"), mode="wb")
img <- readJPEG(tf)
x <- c(1,2)
y <- c(10,12)
df <- data.frame(x, y)

ggplot(transform(df, x=rescale(x, c(0.51, 0.75)), y=rescale(y, c(.2, .5))), 
      aes(x,y)) + 
annotation_custom(rasterGrob(img, width=unit(1,"npc"), height=unit(1,"npc")), -Inf, Inf, -Inf, Inf) +
stat_bin2d() +
scale_x_continuous(expand=c(0,0), limits = c(0, 1)) +
scale_y_continuous(expand=c(0,0), limits = c(0, 1))