我想在图片上绘制点:
我有以下df
x <- c(1,2)
y <- c(10,12)
df <- data.frame(x,y
以下图片 - tennis court
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))
这有效,但我想在特定区域绘制点。所以我想说我想把它放在球场右侧的左侧服务区。
有没有想过如何对图片的特定部分进行分类,以便在该区域内绘制点?
答案 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))