使用ggplot2和ggpattern将图像添加到R图-图像丢失了吗?

问题描述

我第一次在R中使用ggpattern包,但无法在我的绘图中使用该图像。我的代码的简化版本在这里

x = seq(-1.5,3.5,0.1)

y = c( rep(1.0,22),rep(0.2,12),rep(0.7,7),rep(1,10))

ref = data.frame(x = x,y = y)

library(dplyr)
library(ggplot2)
library(ggpattern)

coral = system.file("Coral","coral.jpg",package="ggpattern")

p = ggplot(ref,aes(x = x,y = y))+
scale_y_reverse(lim = c(1,0))+
theme_classic()+
geom_ribbon_pattern(aes(x = x,ymin = 1,ymax = y),color = "darkblue",fill = NA,size = 1.5,pattern = 'image',pattern_type = 'squish',pattern_filename = coral) +
geom_ribbon(aes(x = x,ymin = 0,fill = "lightblue")

当我运行这段代码时,我得到的只是: 缺少图像填充的情节

enter image description here

但是使用此代码,我认为曲线下的白色区域应填充珊瑚图像。有人知道我在做什么错吗?我已经搜索了StackOverflow和GitHub,但是找不到答案。

解决方法

我认为这里的问题是,ggpattern的img文件夹中没有“ coral.jpg”文件。

当我使用文件夹中存在的图像之一编辑代码时,它工作正常。

x = seq(-1.5,3.5,0.1)

y = c( rep(1.0,22),rep(0.2,12),rep(0.7,7),rep(1,10))

ref = data.frame(x = x,y = y)

library(dplyr)
library(ggplot2)
library(ggpattern)

coral = system.file("img","magpie.jpg",package="ggpattern")

p = ggplot(ref,aes(x = x,y = y))+
    scale_y_reverse(lim = c(1,0))+
    theme_classic()+
    geom_ribbon_pattern(aes(x = x,ymin = 1,ymax = y),color = "darkblue",fill = NA,size = 1.5,pattern = 'image',pattern_type = 'squish',pattern_filename = coral) +
    geom_ribbon(aes(x = x,ymin = 0,fill = "lightblue")

p

enter image description here

enter image description here