尝试将图像添加到极坐标图中会出现"错误:annotation_custom仅适用于笛卡尔坐标"

时间:2015-12-28 15:11:48

标签: r ggplot2

我已尝试按照answer's given already将图片添加到图表中,但在使用# install.packages("RCurl", dependencies = TRUE) library(RCurl) myurl <- "http://vignette2.wikia.nocookie.net/micronations/images/5/50/German_flag.png" # install.packages("png", dependencies = TRUE) library(png) img <- readPNG(getURLContent(myurl)) # install.packages("ggplot2", dependencies = TRUE) library(ggplot2) ger <- grid::rasterGrob(img, interpolate=TRUE) ## works, adds the image to the plot ggplot(mtcars, aes(x=mpg, y= cyl)) + geom_line() + annotation_custom(ger, 10, 15, 5) ## doesn't work ggplot(mtcars, aes(x=mpg, y= cyl)) + geom_line() + annotation_custom(ger) + coord_polar() > Error: annotation_custom only works with Cartesian coordinates

时它们不起作用
ggplot2

理想情况下,我希望能够将旗帜图像定位在极坐标图的中心,以及沿y轴放置另一个图像。

无论如何都要添加图片?它可以是原样,不需要转换。

我正在使用{{1}}版本2.0

1 个答案:

答案 0 :(得分:4)

Gregor关于使用cowplot库的建议让我在那里。

introduction to cowplot之后,您可以使用draw_grob功能根据需要叠加图片。需要稍微调整,因为位置会根据绘图的尺寸而变化,但可能会有所不同。

示例:

# install.packages("RCurl", dependencies = TRUE)
library(RCurl)
myurl <- "http://vignette2.wikia.nocookie.net/micronations/images/5/50/German_flag.png"

# install.packages("png", dependencies = TRUE)
library(png)
img <-  readPNG(getURLContent(myurl))

# install.packages("ggplot2", dependencies = TRUE)
library(ggplot2)

ger <- grid::rasterGrob(img, interpolate=TRUE)

g <- ggplot(mtcars, aes(x=mpg, y= cyl)) + geom_line() + coord_polar()

# install.packages("cowplot", dependencies = TRUE)
library(cowplot)
h <- ggdraw(g)
## tweak this to fit your plot
h + draw_grob(ger, 0.4, 0.48, 0.07, 0.07)

enter image description here