ggplot annotation_custom图像没有在正确的y轴上绘图

时间:2017-10-26 14:04:50

标签: r image ggplot2 png

我制作了一个散点图,其中x轴为日期,y轴为连续分数。

在某些日期,我想在这些日期绘制月球图像,但图像似乎没有正确绘制在y轴上。

我正在绘制一个296像素宽和高的png,并尝试使用x / y min和max参数来设置高度。

编辑 - 这是图像 enter image description here

library(ggplot2)
library(dplyr)


rm(list = ls())

startDate <- as.Date("2016-01-01")
endDate <- as.Date("2017-01-01")

testData <- data.frame(dater = seq(startDate, endDate, by = "day"),
                       score = rnorm(367, 50, 10)
)


imgP <- filter(testData, dater %in% as.Date(c("2016-04-01")))

gTest <- ggplot(testData, aes(x=dater, y=score)) +
            geom_point() + scale_y_continuous(breaks = seq(20, 70, 5))


img1 <- readPNG("G:/MHOShare/MHO Staff/James Holland/TempDump/themoon.png")
g1 <- rasterGrob(img1, interpolate=TRUE)

gTest + annotation_custom(g1, xmin = imgP$dater,
                          xmax = imgP$dater + 10,
                          ymin = 50,
                          ymax = 55)

这会生成此图像,但图像的角落似乎不是50或55.它似乎在这两个值之间显示图像。我认为这是因为预计整个区域会填充整个区域,因此它将其居中;但是png应该比那个空间宽得多。

我是否需要使用较小的图像?

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码在我的R 3.4.2上正常运行。这是我使用不同library(ggplot2) library(dplyr) library(png) library(grid) library(RCurl) startDate <- as.Date("2016-01-01") endDate <- as.Date("2017-01-01") testData <- data.frame(dater = seq(startDate, endDate, by = "day"), score = rnorm(367, 50, 10) ) imgP <- filter(testData, dater %in% as.Date(c("2016-04-01"))) gTest <- ggplot(testData, aes(x=dater, y=score)) + geom_point() + scale_y_continuous(breaks = seq(20, 70, 5)) img1 <- readPNG(getURLContent("http://www.dunakin.com/projects/solarsystem/images/TheMoon.png")) g1 <- rasterGrob(img1, interpolate=TRUE) gTest + annotation_custom(g1, xmin = imgP$dater, xmax = imgP$dater + 10, ymin = 50, ymax = 55) 图片的结果:

event.target

enter image description here