将自定义图像显示为 geom_point [英] Display custom image as geom_point
问题描述
是否可以在 R ggplot 中将自定义图像(例如 png 格式)显示为 geom_point?
Is it possible to display custom image (say png format) as geom_point in R ggplot?
library(png)
pic1 <- readPNG("pic1.png")
png("Heatmap.png", units="px", width=3200, height=3200, res=300)
ggplot(data_frame, aes(medium, day, fill = Transactions)) +
geom_tile(colour="white") +
facet_grid(dime3_year~dime3_month) +
scale_fill_gradient(high="blue",low="white") +
theme_bw() +
geom_point(aes(dime3_channel, day, size=Conv,alpha=Conv,image=(annotation_raster(pic1,xmin=0,ymin=0,xmax=5,ymax=5)),color="firebrick")) +
给出错误:
不知道如何自动选择类型对象的比例原型/环境.默认为连续错误:美学必须要么是长度为 1,要么与数据问题:(annotation_raster(conv_pic, xmin = 0, ymin = 0, xmax =5, ymax = 5))
Don't know how to automatically pick scale for object of type proto/environment. Defaulting to continuous Error: Aesthetics must either be length one, or the same length as the dataProblems:(annotation_raster(conv_pic, xmin = 0, ymin = 0, xmax = 5, ymax = 5))
推荐答案
point geom 用于创建散点图,似乎并没有完全按照您的需要设计,即显示自定义图像.但是,在此处回答了类似的问题,这表明问题可以通过以下步骤解决:
The point geom is used to create scatterplots, and doesn't quite seem to be designed to do what you need, ie, display custom images. However, a similar question was answered here, which indicates that the problem can be solved in the following steps:
(1)读取你想要显示的自定义图片,
(1) Read the custom images you want to display,
(2) 使用rasterGrob()
函数在给定的位置、大小和方向渲染光栅对象,
(2) Render raster objects at the given location, size, and orientation using the rasterGrob()
function,
(3) 使用qplot()
、
(4) 使用诸如 annotation_custom()
之类的 geom 作为静态注释,指定 user20650 提到的 x 和 y 限制的粗略调整.
(4) Use a geom such as annotation_custom()
for use as static annotations specifying the crude adjustments for x and y limits as mentioned by user20650.
使用下面的代码,我可以在给定的 xmin、xmax、ymin 和 ymax 处获得两个自定义图像 img1.png 和 img2.png.
Using the code below, I could get two custom images img1.png and img2.png positioned at the given xmin, xmax, ymin, and ymax.
library(png)
library(ggplot2)
library(gridGraphics)
setwd("c:/MyFolder/")
img1 <- readPNG("img1.png")
img2 <- readPNG("img2.png")
g1 <- rasterGrob(img1, interpolate=FALSE)
g2 <- rasterGrob(img2, interpolate=FALSE)
qplot(1:10, 1:10, geom="blank") +
annotation_custom(g1, xmin=1, xmax=3, ymin=1, ymax=3) +
annotation_custom(g2, xmin=7, xmax=9, ymin=7, ymax=9) +
geom_point()
这篇关于将自定义图像显示为 geom_point的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!