Dww ответ на мой следующий пост StackOverflow:Как выровнять два ggplot2 участков, где один имеет фоновое изображение
how to fit the plot over a background image in R and ggplot2
имеет меня довольно близко к почти где я хочу быть. За исключением того, что когда я совмещаю график, изображенный на предыдущем графике, сюжет с фоновым изображением «истекает» в область панели сюжета, тогда как другой сюжет не имеет значения. это показано на скриншоте ниже:
Посмотрите пространство панели в верхней части первого участка и как участок с фоновым изображением справа имеет изображение, чтобы заполнить область панели. Если я удаляю фоновое изображение, то оба графика выравниваются идеально. Я пытаюсь ограничить фоновое изображение НЕ расширять и заполнять область панели как сверху, так и снизу. Я не знаю, как это сделать. Код примера показан ниже:
ibrary(ggplot2)
library(readxl)
library(jpeg)
library(grid)
df_ct <- data.frame(X0 = 0:100)
df_ct$X1 = sin(df_ct$X0) +rnorm(101)
setwd('~/R/Image_Example')
image_file <- "C1_9195-9197.jpg"
img <- readJPEG(image_file)
g_hra <-ggplot(df_hra_plot_current) + geom_point(aes(x,y),size=0,color='white') +
geom_rect(data=hra_rect,inherit.aes=FALSE, aes(xmin=xmin,xmax=xmax,ymin=ymin,ymax=ymax,group=id,fill=factor(tier))) +
scale_fill_manual(values = hra_color_vector) + guides(fill=FALSE) +
scale_y_reverse() + ylab("Depth") +
theme(axis.title.x=element_blank(), axis.text.x=element_blank(), axis.ticks.x=element_blank(),
axis.title.y=element_blank(), axis.text.y=element_blank()) +
theme(plot.margin = unit(c(0,0,0,0), "lines"))
g <- rasterGrob(img, width=unit(1,"npc"), height=unit(1,"npc"), interpolate = FALSE)
g_ct <- ggplot(data=df_ct) +
annotation_custom(g, -Inf, Inf, -Inf, Inf) +
geom_path(aes_string(x=df_ct$X1, y=df_ct$X0), color='cyan') +
scale_y_reverse("") +
theme(plot.margin = unit(c(0,0,0,0), "lines"),
axis.line.x = element_blank(),
axis.ticks.x = element_blank(),
axis.text.x = element_blank(),
axis.line.y = element_blank()) +
scale_x_continuous("")
grid.arrange(g_hra, g_ct, ncol = 2)