在时间序列图上绘制 PNG

Plot PNG on Time Series Plot

我正在尝试使用 annotation_raster 将图像放在时间序列图上,但是因为 y 值是一个日期,所以我一直收到错误信息

"UseMethod("rescale") 错误: 没有适用于 'rescale' 的方法应用于 class“字符”

的对象

有没有办法使用 annotation_raster 或其他更好的方法?

require(ggplot2)
require(ggpubr)
library(png)

###Set working directory
wd <- "E:/R/DataViz/Data" # top level working directory
setwd(wd)


###Make Data Frame
Dates <- seq(as.Date('2020-01-01'), as.Date('2020-01-31'), by = 'days')
Number <- seq(1:31)
DF <- data.frame(Dates,Number)

###Import PNG 
mypngfile <- download.file('http://api.altmetric.com/donut/502878_64x64.png', destfile = 'mypng.png', mode = 'wb')
PNG <- readPNG("mypng.png")


####Plot Data
ggplot(DF,aes(x = Dates, y = Number)) +
  geom_line() +
  annotation_raster(PNG, ymin = 20,ymax = 30,
                xmin =  
                  "2020-01-06",
                xmax =  
                  "2020-01-27")

由于您的 x 值是日期值,因此您需要在调用 annotation_raster 时为您的 xmin/xmin 使用日期。使用

ggplot(DF,aes(x = Dates, y = Number)) +
  geom_line() +
  annotation_raster(PNG, ymin = 20,ymax = 30,
                    xmin =  
                      as.Date("2020-01-06"),
                    xmax =  
                      as.Date("2020-01-27"))